Contenu du cours
Techniques Avancées en SQL
Techniques Avancées en SQL
Déclencheurs
Déclencheurs dans les bases de données sont des types spéciaux de procédures stockées qui sont automatiquement exécutées ou déclenchées en réponse à certains événements ou actions se produisant dans la base de données.
Ces événements peuvent inclure des insertions, des mises à jour ou des suppressions de données dans les tables et des modifications des objets de schéma de base de données comme les tables ou les vues.
Remarque
Les déclencheurs ne peuvent pas être invoqués explicitement par les utilisateurs. Au lieu de cela, ils sont automatiquement exécutés en réponse aux opérations auxquelles ils sont associés.
Déclencheurs DML
Un déclencheur DML, également connu sous le nom de déclencheur de langage de manipulation de données, est un objet de base de données qui exécute automatiquement une action spécifiée lorsqu'un certain événement se produit sur une table ou une vue.
Les déclencheurs DML sont souvent utilisés pour appliquer des règles métier, maintenir l'intégrité des données ou effectuer des tâches d'audit.
Types de déclencheurs DML
- Déclencheurs après : Ces déclencheurs se déclenchent après l'exécution de l'action de déclenchement (insertion, mise à jour, suppression) sur la table ;
- Déclencheurs avant : Ces déclencheurs se déclenchent avant l'action de déclenchement. Ils vous permettent d'intercepter l'action originale et d'exécuter une logique personnalisée avant de décider de poursuivre ou non l'action originale.
Exemple de déclencheur après
Nous avons précédemment exploré un exemple d'utilisation d'une transaction pour ajouter des valeurs à la table BankAccounts
et à la table UserLogs
en tant qu'unité logique unique dans la première section de ce cours.
Maintenant, au lieu d'utiliser une transaction, nous pouvons réaliser cela en créant un déclencheur AFTER
sur l'opération INSERT
dans la table BankAccounts
.
En conséquence, nous ne pourrons insérer que de nouveaux comptes, et la valeur de journal correspondante sera automatiquement ajoutée par le déclencheur.
Remarque
Dans les déclencheurs PostgreSQL,
NEW
est une variable d'enregistrement spéciale représentant la nouvelle ligne insérée ou mise à jour dans la table. Elle vous permet d'accéder aux valeurs des colonnes dans la nouvelle ligne au sein de la fonction de déclenchement.
Si nous travaillons avec des lignes supprimées, nous devons utiliser la variable d'enregistrementOLD
au lieu deNEW
.
Exemple de déclencheur avant
Supposons que nous voulons empêcher l'ajout de valeurs avec un solde de compte négatif. Nous pouvons créer un déclencheur BEFORE
pour y parvenir. Ce déclencheur vérifiera le solde avant l'opération, et s'il est négatif, l'opération ne sera pas effectuée.
Modèle de création de déclencheur
Nous pouvons observer le modèle typique pour créer des déclencheurs : initialement, nous définissons une fonction pour exécuter une logique spécifique avant ou après une opération. Ensuite, nous associons cette fonction comme un déclencheur à une table et une action désignées.
Veuillez noter que dans l'instruction :
nous avons la flexibilité d'utiliser UPDATE
ou DELETE
, à la place de l'opération INSERT
.
Mais faites attention que nous ne pouvons pas créer de déclencheurs SELECT
car l'instruction SELECT
ne modifie aucune ligne dans la table !
Merci pour vos commentaires !