Case Study

after update trigger oracle exemple

14 Dec 2018

Bien que les déclencheurs puissent être écrits pour enregistrer des informations similaires à celles enregistrées par l`instruction AUDIT, les déclencheurs ne doivent être utilisés que lorsque des informations d`audit plus détaillées sont requises. La relation de table Emp_tab et Dept_tab est utilisée dans ces exemples. Le contexte d`application est une fonctionnalité relativement nouvelle qui améliore votre capacité à implémenter un contrôle d`accès affiné. La seule exception à cela est lorsque l`événement considéré est la base de données STARTUP, SHUTDOWN ou LOGIN lorsque l`utilisateur se connectant est SYSTEM. Un article sur les déclencheurs composés et d`autres nouvelles fonctionnalités liées au déclencheur dans 11g peut être trouvé ici. Plusieurs des déclencheurs incluent des instructions qui verrouillent des lignes (SELECT. Maintenant, créez une table`emp_backup`avec la même structure que la table`EMP`. Par conséquent, si un site distant n`est pas disponible lorsque le déclencheur doit être compilé, la base de données Oracle ne peut pas valider l`instruction accédant à la base de données distante et la compilation échoue. Les nouvelles valeurs de colonne sont référencées à l`aide du nouveau qualificateur avant le nom de la colonne, tandis que les anciennes valeurs de colonne sont référencées à l`aide de l`ancien qualificateur avant le nom de la colonne. Dans Oracle 11g, les déclencheurs peuvent maintenant être créés dans l`état désactivé, illustré ici. Comme nous l`avons déjà créé à la fois les tableaux dans l`exemple ci-dessus, nous allons directement écrire un déclencheur pour`AFTER UPDATE`. En règle générale, le code pour DELETE CASCADE est combiné avec le code de mise à jour SET NULL ou mise à jour par défaut pour tenir compte des mises à jour et des suppressions.

Nous insérerons des valeurs différentes dans employee_salary table. Cette fonctionnalité est intégrée au moteur de Queueing avancé. Les anciennes valeurs sont les valeurs d`origine, et les nouvelles valeurs sont les valeurs actuelles, telles que définies par le déclencheur UPDATE ou INSERT le plus récemment déclenché. L`erreur de mutation, décrite plus haut dans cette section, empêche toujours le déclencheur de lire ou de modifier la table que l`instruction parente modifie. En utilisant les déclencheurs AFTER, les informations d`audit sont enregistrées après que l`instruction de déclenchement est soumise à toutes les contraintes d`intégrité applicables, empêchant les cas où le traitement d`audit est effectué inutilement pour les instructions qui génèrent des exceptions à contraintes d`intégrité. Cochez «fonctions d`attribut d`événement» avant d`utiliser une fonction d`attribut d`événement, car ses effets peuvent être indéfinis au lieu de générer une condition d`erreur. Si la fonction ou le package spécifié dans le déclencheur est supprimé, le déclencheur est marqué comme non valide. Par exemple, certaines opérations DDL peuvent ne pas être autorisées sur les événements DDL.

Toutefois, les déclencheurs et les contraintes d`intégrité ont des différences significatives. Le corps du déclencheur pour les déclencheurs de ligne comporte des constructions spéciales qui peuvent être incluses dans le code du bloc PL/SQL: les noms de corrélation et l`option REFERENCEING, ainsi que les prédicats conditionnels insertion, suppression et mise à jour. Il existe deux noms de corrélation pour chaque colonne de la table en cours de modification: une pour l`ancienne valeur de colonne et une pour la nouvelle valeur de colonne. Les déclencheurs de niveau ligne peuvent accéder aux valeurs nouvelles et existantes des colonnes à l`aide du «: NEW. La ligne parente correspondant à cet élément de table imbriquée est accessible à l`aide du qualificateur parent. Les sections suivantes utilisent cet exemple pour illustrer la façon dont les parties d`un déclencheur sont spécifiées. Procédure Java associée à une table, une vue, un schéma ou la base de données elle-même. Les déclencheurs sont couramment utilisés pour compléter les fonctionnalités d`audit intégrées de la base de données Oracle.

Dans cet exemple, nous avons créé un déclencheur qui insère des lignes dans la table d`audit après chaque mise à jour de la colonne salaire de la table employee_salary, chaque fois que la randonnée est supérieure à 50000.