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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <matteo.zonza@gmbricolage.com> wrote in message
news:9ade01c43407$e87abdb0$a501280a@phx.gbl...
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 ?
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
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
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 ?
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 ?