Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[SQL 2000] déclencheur sur update

2 réponses
Avatar
Mattéo ZONZA
Bonjour,=20


existe-t-il un moyen, dans un d=E9clencheur, de d=E9terminer=20
la liste des champs d'une table qui ont =E9t=E9 modifi=E9s lors=20
de l'ex=E9cution de l'instruction UPDATE ?

Merci!


Matt=E9o ZONZA

2 réponses

Avatar
Laurent Moreau
Oui, il "suffit" de regarder le contenu de la table Deleted dans un trigger
sur UPDATE

Voir aide en ligne de la commande CREATE TRIGGER.


Morceau choisi:
a.. Les tables deleted et inserted sont des tables logiques (conceptuelles).
D'un point de vue structurel, elles sont semblables à la table dans laquelle
le déclencheur est défini, c'est-à-dire la table sur laquelle l'action de
l'utilisateur est tentée, et gardent les anciennes ou les nouvelles valeurs
des lignes qui peuvent être modifiées par l'action de l'utilisateur. Par
exemple, pour extraire toutes les valeurs dans la table deleted, utilisez :
SELECT *
FROM deleted



Laurent.






"Mattéo ZONZA" wrote in message
news:9ade01c43407$e87abdb0$
Bonjour,


existe-t-il un moyen, dans un déclencheur, de déterminer
la liste des champs d'une table qui ont été modifiés lors
de l'exécution de l'instruction UPDATE ?

Merci!


Mattéo ZONZA
Avatar
Fred BROUARD
Utiliser les fonctions : UPDATE et COLUMNS_UPDATED

1) La fonction UPDATE permet de tester si une colonne est visé par un changement de valeur. Elle s'emploie de la manière
suivante :
IF [NOT] UPDATE(<colonne>)
BEGIN
<traitement>
END
Elle ne peut être utilisée que dans les triggers de type INSERT et UPDATE.

2) La fonction COLUMNS_UPDATED() permet d'interroger les colonnes visées par un ordre INSERT ou UPDATE. Elle utilise un
masque binaire constitué par le rang ordinal des colonnes de la table. Son emploi syntaxique est le suivant :
IF [NOT] (COLUMNS_UPDATED() & <masque ordinal>) <comparateur> <valeur masque attendue>
BEGIN
<traitement>
END

ATTENTION : le rang ordinal de la colonne est celui se trouvant dans la table des information de schema. Il est
susceptible de changer en fonctions des modifications de la table (ALTER TABLE...)

A lire sur le sujet : http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL.html#5.2
Paragraphe 5.3.2.

A +


--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************


Mattéo ZONZA a écrit:
Bonjour,


existe-t-il un moyen, dans un déclencheur, de déterminer
la liste des champs d'une table qui ont été modifiés lors
de l'exécution de l'instruction UPDATE ?

Merci!


Mattéo ZONZA