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

Triggers et fonction Update

3 réponses
Avatar
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)

3 réponses

Avatar
Patrice
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" a écrit dans le message de news:
%
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)


Avatar
Fred
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)
Avatar
Fred BROUARD
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 ***********************