triggers pl sql tutorial with example programs
Pour tout savoir sur les déclencheurs dans PL SQL, leurs types, leur utilisation et leurs avantages:
dans le Transactions PL SQL tutoriel du Série PL / SQL , nous avons découvert les instructions COMMIT, ROLLBACK et SAVEPOINTS.
Dans cet article, nous explorerons les déclencheurs dans PL SQL et leurs avantages, types et utilisation. Nous discuterons de la création, du déclenchement, de l'activation et de la désactivation des déclencheurs PL / SQL à l'aide d'exemples de programmes.
Commençons par la discussion !!
Ce que vous apprendrez:
Déclencheurs en PL / SQL
Un programme stocké qui est déclenché par défaut ou par certains événements est appelé un déclencheur.
Un déclencheur est exécuté en raison des circonstances suivantes répertoriées ci-dessous:
- Par une instruction DDL (Data Definition Language) comme DROP, ALTER ou CREATE.
- Par une instruction DML (Data Manipulation Language) comme UPDATE, INSERT ou DELETE.
- Par une action de base de données telle que SHUTDOWN, STARTUP, LOGOFF et LOGON.
Un déclencheur peut être défini sur un schéma, une vue ou une base de données auquel un événement est associé.
Avantages des déclencheurs
Ceux-ci sont énumérés ci-dessous:
- Capacité à faire respecter l'intégrité référentielle.
- Capacité de surveillance.
- Capacité à enregistrer et à conserver des données sur l'accès aux tables.
- Possibilité d'arrêter les transactions qui ne sont pas valides.
- Capacité à appliquer les fonctionnalités de sécurité.
- Possibilité de produire des valeurs de colonne dérivées par défaut.
Usages des déclencheurs
Ceux-ci sont énumérés ci-dessous:
- Empêche les transactions incorrectes.
- Accumule des informations sur l'utilisation des tables.
- Surveillez les informations critiques.
Types de déclencheurs dans PL / SQL
Les déclencheurs peuvent être classés en fonction de paramètres. Les types de déclencheurs sont répertoriés ci-dessous:
# 1) Catégorisation au niveau du déclencheur.
- Déclencheur de niveau ROW: Il est exécuté pour chaque enregistrement mis à jour par une instruction DML.
- STATEMENT Déclencheur de niveau: Il n'est exécuté qu'une seule fois par l'instruction d'événement.
# 2) Catégorisation sur le timing de déclenchement.
- AVANT le déclenchement: Il est exécuté avant l'événement spécifique qui a eu lieu.
- APRÈS déclenchement: Il est exécuté après l'événement spécifique qui a eu lieu.
- AU LIEU DU déclencheur: C'est un type spécial de déclencheur et il est exécuté pour chaque enregistrement mis à jour par une instruction DML.
# 3) Catégorisation de l'événement déclencheur.
- Déclencheur DML: Il est exécuté si un événement DML tel qu'un UPDATE, INSERT ou DELETE est effectué.
- Déclencheur DDL: Il est exécuté si un événement DDL tel qu'un DROP, ALTER ou CREATE est exécuté.
- Déclencheur DATABASE: Il est exécuté si un événement de base de données tel que SHUTDOWN, STARTUP, LOGOFF et LOGON a eu lieu.
Créer des déclencheurs
Syntaxe de création d'un déclencheur:
CREATE (OR REPLACE ) TRIGGER trigger_n BEFORE DELETE (OF column_n) ON table_n (REFERENCING OLD AS o NEW AS n) (FOR EACH ROW) WHEN (condition) DECLARE <> BEGIN < > EXCEPTION <> END;
Ici,
- CREATE (OR REPLACE) TRIGGER trigger_n - C'est pour créer, remplacer ou mettre à jour un déclencheur ayant un nom comme trigger_n.
- APRÈS - Ceci sert à déterminer l'heure à laquelle la gâchette sera déclenchée. L'INSTEAD OF sert à créer un déclencheur qui a une vue.
- EFFACER - C'est pour exécuter les actions DML.
- (OF colonne_n) - C'est pour mentionner le nom de la colonne qui doit être modifié.
- (ON table_n) - C'est pour mentionner le nom de la table qui est attaché au déclencheur.
- (RÉFÉRENCE VIEUX COMME NOUVEAU COMME n) - Il s'agit de faire référence aux anciennes et nouvelles valeurs par l'instruction DML comme UPDATE, INSERT ou DELETE.
- (POUR CHAQUE RANG) - Cela détermine un déclencheur au niveau de la ligne, c'est-à-dire que le déclencheur sera déclenché pour chaque ligne modifiée, sinon le déclencheur ne se déclenchera qu'une seule fois lorsque l'instruction SQL est exécutée, ce qui est connu sous le nom de déclencheur au niveau de la table.
- QUAND (condition) - Cela donne une condition pour les lignes pour lesquelles le déclencheur serait exécuté. Cela s'applique uniquement aux déclencheurs au niveau des lignes.
Considérons à nouveau une table qui est nommée ÉTUDIANT .
Créons maintenant un déclencheur au niveau de la ligne pour la table STUDENT qui serait exécuté par l'instruction DML comme UPDATE, INSERT ou DELETE sur cette table. Le déclencheur calculera et affichera la différence d'âge entre les valeurs actuelles et précédentes.
Implémentation de code pour la création de déclencheurs:
CREATE OR REPLACE TRIGGER age_changes BEFORE DELETE OR INSERT OR UPDATE ON student FOR EACH ROW WHEN (NEW.CODE > 0) DECLARE age_diff number; BEGIN age_diff := :NEW.age - :OLD.age; dbms_output.put_line ('Prevoius age: ' || : OLD.age); dbms_output.put_line ('Current age: ' || : NEW.age); dbms_output.put_line ('Age difference: ' || age_diff); END; /
Sortie du code ci-dessus:
Le code ci-dessus présente des caractéristiques importantes. Ils sont listés ci-dessous:
- Pour un déclencheur de niveau table, les ANCIENNES et NOUVELLES adresses ne sont pas disponibles. Nous pouvons utiliser ces références pour les déclencheurs au niveau des enregistrements.
- Si nous voulons appliquer une autre requête dans le même déclencheur, alors nous devons utiliser le mot-clé AFTER comme déclencheur qui ne peut modifier à nouveau une table qu'après que les modifications précédentes ont été correctement appliquées.
- Le déclencheur décrit ci-dessus est exécuté avant toute action DELETE, UPDATE ou INSERT sur la table. Cependant, nous pouvons également concevoir un déclencheur qui se déclenche également sur une seule opération ( par exemple, APRÈS INSERT qui exécutera le déclencheur chaque fois qu'un enregistrement est inséré à l'aide de l'opération INSERT sur la table).
Déclenchement de déclencheurs dans PL SQL
Pour déclencher le déclencheur ci-dessus, nous devons effectuer toute opération DML telle que DELETE, INSERT ou UPDATE sur la table. Insérons à nouveau quelques valeurs dans la table Student à l'aide de la requête ci-dessous:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Une fois l'opération INSERT terminée dans la table Student, le déclencheur age_changes est exécuté.
La sortie du code de requête:
Puisqu'un nouvel enregistrement est créé et que l'âge précédent n'est pas disponible, l'âge précédent et Différence d'âge le calcul est nul dans la sortie ci-dessus.
Maintenant, laissez-nous modifier un enregistrement avec l'instruction UPDATE à l'aide de la requête ci-dessous:
UPDATE student SET age = age + 1 WHERE code = 7;
Une fois l'opération UPDATE terminée dans la table Student, le déclencheur age_changes est exécuté.
La sortie de la requête ci-dessus:
Clause NOUVELLE et ANCIENNE
Une nouvelle clause est utilisée pour stocker la nouvelle valeur des colonnes de la table pour l'exécution du déclencheur. Il est utilisé dans les déclencheurs de niveau enregistrement. Une ancienne clause est utilisée pour stocker l'ancienne valeur des colonnes de la table pour l'exécution du déclencheur. Il est également utilisé dans les déclencheurs au niveau des enregistrements.
Ainsi, la nouvelle et l'ancienne clause sont utilisées pour contenir et faire référence aux nouvelles et anciennes valeurs dans un corps de déclencheur.
Déclencheur composé
Un déclencheur composé est utilisé pour définir les opérations pour tous les points de synchronisation dans le corps du déclencheur. Il donne la possibilité de fusionner toutes les actions à des moments différents dans un seul corps de déclencheur.
Les différents points de chronométrage sont énumérés ci-dessous:
- Niveau APRÈS DÉCLARATION
- Niveau AVANT RANGÉE
- Niveau APRÈS RANG
- BEFORE STATEMENT niveau
Désactiver et activer le déclencheur
Nous pouvons activer et désactiver un déclencheur à l'aide d'une instruction DDL ALTER.
Syntaxe:
ALTER TRIGGER trigger_n (ENABLE|DISABLE);
Ici, trigger_n est le nom du déclencheur que nous voulons activer ou désactiver.
Désactivons maintenant le déclencheur à l'aide de la requête ci-dessous:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
La sortie du code de requête:
Maintenant, activons le même déclencheur à l'aide de la requête ci-dessous:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
La sortie du code de requête:
Foire aux questions et réponses
Q # 1) Combien de types de déclencheurs existent dans PL SQL?
Répondre: Il existe deux types de déclencheurs en PL / SQL. Il s'agit d'un déclencheur au niveau de la ligne et d'un déclencheur au niveau de l'instruction.
Q # 2) Quel type de déclencheur utilise l'ancien et le nouveau qualificatif?
questions d'entretien de test manuel pour 4 ans d'expérience
Répondre: Les anciens et nouveaux qualificatifs ne peuvent être utilisés qu'avec des déclencheurs de niveau ligne. Ils ne sont pas compatibles avec les déclencheurs au niveau des instructions.
Q # 3) Quelle est la différence entre le déclencheur nouveau et le déclencheur ancien?
Répondre: Un nouveau déclencheur donne une liste des nouvelles versions des objets d'enregistrement. Un ancien déclencheur donne une liste des anciennes versions des objets d'enregistrement.
Q # 4) Qu'est-ce qu'un déclencheur de niveau ligne dans PL SQL?
Répondre: Un déclencheur au niveau de la ligne n'est déclenché qu'une seule fois pour une ligne en raison d'un événement. Par exemple, si la suppression est considérée comme un événement déclencheur pour une table, une instruction de suppression affecte deux lignes, alors le déclencheur doit être déclenché deux fois.
Q # 5) Qu'est-ce qu'un déclencheur? Expliquez avec un exemple.
Répondre: Un déclencheur est une procédure stockée qui est déclenchée par défaut si un incident se produit dans la base de données. Par exemple, si une ligne est insérée dans une table ou si nous modifions certaines valeurs dans la table.
Q # 6) Quels sont les déclencheurs après?
Répondre: Les déclencheurs after sont déclenchés après l'exécution d'une instruction DML mais avant la validation dans la base de données. Il est également capable de faire reculer son action.
Conclusion
Dans ce didacticiel, nous avons discuté de certains concepts de base des déclencheurs dans PL SQL qui sont essentiels pour les utiliser lors de la programmation. Nous avons couvert les sujets suivants énumérés ci-dessous:
- Déclencheurs.
- Types de déclencheurs.
- Diverses opérations sur les déclencheurs.
<< PREV Tutorial | Tutoriel SUIVANT >>
lecture recommandée
- Package PL SQL: Tutoriel Oracle PL / SQL Package avec des exemples
- Tutoriel PL SQL pour les débutants avec des exemples | Qu'est-ce que PL / SQL
- Tutoriel PL SQL Records avec des exemples
- Didacticiel sur les opérateurs PL SQL et les instructions de contrôle
- Curseur et chaînes PL SQL: Tutoriel avec des exemples de code