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,
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager