Bonjour,
Lorsqu'on crée un Trigger qui agit sur tout Update ou Insert, comment déterminer si on a affaire à un Update ou à un Insert ?
Je me souviens que sous Oracle, on faisait IF Inserting (je crois) mais ça n'a pas l'air de passer :s
Version imprimable
Bonjour,
Lorsqu'on crée un Trigger qui agit sur tout Update ou Insert, comment déterminer si on a affaire à un Update ou à un Insert ?
Je me souviens que sous Oracle, on faisait IF Inserting (je crois) mais ça n'a pas l'air de passer :s
BOnjour,
Les pseudo tables inserted et deleted contiennent les données :
- avant insertion et avant modif pour inserted
- après modif et après suppression pour deleted
Autrement dit s'il s'agit d'une insertion, deleted ne contient aucune ligne.
s'il s'agit d'une suppression inserted ne contient aucune ligne.
D'ou la règle :
1) IF EXISTS(SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED) => UPDATE
2) IF EXISTS(SELECT * FROM INSERTED) AND NOT EXISTS(SELECT * FROM DELETED) => INSERT
3) IF NOT EXISTS(SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED) => DELETE
A +
Impecable, un grand merci pour cette explication brève et précise. :D