Triggers et fonction Update

Le
Fred
Bonjour,

J'ai une incompréhension sur la fonction UPDATE(col).
Dans un trigger sur update, on dispose des pseudos tables Inserted et
Deleted.
Il semble que ces tables peuvent contenir plusieurs lignes.

copie MSDN Library
If trigger actions depend on the number of rows a data modification
effects, use tests (such as an examination of @@ROWCOUNT) for multirow
data modifications (an INSERT, DELETE, or UPDATE based on a SELECT
statement), and take appropriate actions.


Dans quelle circonstance cela peut-il arriver ?
Si c'est le cas, quel usage peut-il être fait de la fonction UPDATE() ?

--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice
Le #11856381
Le trigger est effectué une fois avec toutes les lignes impactées dans
inserted/deleted et non pas plusieurs fois pour chaque "enregistrement"
séparemment.

Voir la doc mais de mémoire, cette fonction indique simplement si la colonne
apparait dans la clause de mise à jour, pas si la colonne est effectivement
mise à jour sur un "enregistrement" en particulier.

Essaie par exemple pour commencer un UPDATE MaTable SET MonChamp=MonChamp .
Je m'attends à :
- pas de clause where donc toutes les lignes seront présentes dans
inserted/deleted
- UPDATE(MonChamp) devrait être vrai (ce champ fait l'objet d'une "mise à
jour" même si la nouvelle valeur est la même) car il apparait dans la liste
des champs modifiés...

--
Patrice

"Fred" %
Bonjour,

J'ai une incompréhension sur la fonction UPDATE(col).
Dans un trigger sur update, on dispose des pseudos tables Inserted et
Deleted.
Il semble que ces tables peuvent contenir plusieurs lignes.

--- copie MSDN Library
If trigger actions depend on the number of rows a data modification
effects, use tests (such as an examination of @@ROWCOUNT) for multirow
data modifications (an INSERT, DELETE, or UPDATE based on a SELECT
statement), and take appropriate actions.
---

Dans quelle circonstance cela peut-il arriver ?
Si c'est le cas, quel usage peut-il être fait de la fonction UPDATE() ?

--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)


Fred
Le #11856361
Dans : news:,
Patrice disait :

Voir la doc mais de mémoire, cette fonction indique simplement si la
colonne apparait dans la clause de mise à jour, pas si la colonne est
effectivement mise à jour sur un "enregistrement" en particulier.



En relisant la doc, c'est effectivement ce que j'aurais du comprendre !
Merci pour cet éclaircissement.

--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Fred BROUARD
Le #11856301
Fred a écrit :
Bonjour,

J'ai une incompréhension sur la fonction UPDATE(col).
Dans un trigger sur update, on dispose des pseudos tables Inserted et
Deleted.
Il semble que ces tables peuvent contenir plusieurs lignes.



les triggers sont par nature ensembliste, c'est à dire que c'est l'ordre
INSERT UPDATE OU DELETE qui déclenche le code du trigger qu'il y ait une
ligne ou trois millions.

Lisez l'article que j'ai écrit a cet égard...
http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L5


--- copie MSDN Library
If trigger actions depend on the number of rows a data modification
effects, use tests (such as an examination of @@ROWCOUNT) for multirow
data modifications (an INSERT, DELETE, or UPDATE based on a SELECT
statement), and take appropriate actions.
---

Dans quelle circonstance cela peut-il arriver ?
Si c'est le cas, quel usage peut-il être fait de la fonction UPDATE() ?




A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Publicité
Poster une réponse
Anonyme