[SQL 2000] déclencheur sur update

Le
Mattéo ZONZA
Bonjour,


existe-t-il un moyen, dans un dclencheur, de dterminer
la liste des champs d'une table qui ont t modifis lors
de l'excution de l'instruction UPDATE ?

Merci!


Matto ZONZA
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Laurent Moreau
Le #11341071
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" 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
Fred BROUARD
Le #11340951
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


Publicité
Poster une réponse
Anonyme