Vous êtes sur la page 1sur 18

Déclencheurs

TIREKT Manal
2

DÉCLENCHEUR / TRIGGER
3 INTRODUCTION
Un déclencheur est une procédure stockée spéciale
qui s'exécute automatiquement lorsqu'un
événement se produit dans le serveur de base de
données. Les déclencheurs LMD s'exécutent
lorsqu'un utilisateur essaie de modifier des données
via un événement LMD (Data Manipulation
Language). Les événements LMD sont des
instructions INSERT, UPDATE ou DELETE exécutées sur
une table ou une vue. Ces déclencheurs s'activent
au déclenchement d'un événement valide, que des
lignes de table soient affectées ou non.

Un déclencheur est lié à une table.


Et un (ou des) événements
4 Création d’un déclencheur
CREATE [ OR ALTER ] TRIGGER trigger_name
ON table
{ FOR | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
AS
BEGIN
sql_statement [ ; ]
END
5 Types de déclencheurs DML

➢ FOR : s’exécutent après une instruction


INSERT,DELETE ou UPDATE.

➢ INSTEAD OF: s’exécutent à la place de


l'action d’une instruction INSERT,DELETE ou
UPDATE.
6 Mode de fonctionnement
d'un déclencheur INSERT
➢ Lors de l'application d'un déclencheur INSERT, des nouvelles lignes
sont ajoutées à la fois à la table du déclencheur et à la table
inserted.
➢ La table inserted est une table logique qui contient une copie des
lignes qui ont été insérées.
7
Mode de fonctionnement
d'un déclencheur DELETE
➢ Lors de l'application d'un déclencheur DELETE, les lignes supprimées
dans la table concernée sont placées dans une table deleted
spéciale.
➢ La table deleted est une table logique qui contient une copie des
lignes qui ont été supprimées.
8 Mode de fonctionnement
d'un déclencheur UPDATE

Lorsque vous exécutez une instruction UPDATE dans une


table pour laquelle un déclencheur a été défini, les lignes
d'origine (image de départ) sont déplacées dans la table
deleted et les lignes mises à jour (image finale) sont
insérées dans la table inserted.
9 ROLLBACK
Il permet d’annuler une mise à jour (INSERT,UPDATE et DELETE)
10

sera ajouté + Msg


11
12
13
 Exemple :
14
Livre (CodeL, titre, nbrPage, Prix)
Auteur (NumA, nom, prenom)
Liv_Aut(# CodeL, #NumA)

➔ Un livre peut avoir au plus 3 auteurs.

CodeL NumA
2 12
2 3
2 1
2 3
2 4
15

CREATE TRIGGER trigger_Livre


On Liv_Aut
For Insert, Update
As
Begin
If (select count(*) from Liv_Aut la, inserted i
where la. CodeL = i. CodeL ) > 3 )
Begin
Rollback;
Print ‘Impossible d’avoire plus de 3 auteurs pour
un livre ’
End
End
16 ➔ Le titre ne peut pas être modifier.

Livre (CodeL, titre, nbrPage, Prix)


Auteur (NumA, nom, prenom)
Liv_Aut(# CodeL, #NumA)
17 ➔ Le titre ne peut pas être modifier.

CREATE TRIGGER Titre_Livre


On Livre
For Update
As
Begin
If Update(titre)
Begin
Rollback;
Print ‘Impossible de modifier le titre’
End
End
18 Supprimer un déclencheur

DROP TRIGGer Trigger_Name

Vous aimerez peut-être aussi