L'exécution du triggersur SQL Server

Dites que j'ai un triggersur UPDATE sur la tableA qui insère un nouvel logging dans la tableB .

 CREATE TRIGGER insertIntoTableB ON tableA FOR UPDATE AS INSERT INTO tableB (...) VALUES (...) GO 

Je cours alors ces déclarations séquentiellement. La deuxième instruction UPDATE (UPDATE tableB ) fonctionnera-t-elle correctement? (c'est-à-dire attendre que le triggersur de la table A s'exécute complètement)

 UPDATE tableA SET ... WHERE key = 'some key' UPDATE tableB SET ... WHERE key = 'newly inserted key from sortinggger' 

Le comportement est soumis à la configuration du server de nested sortingggers , voir Utilisation de triggersurs nesteds :

Les triggersurs DML et DDL sont nesteds lorsqu'un triggersur effectue une action qui triggers un autre triggersur. Ces actions peuvent triggersr d'autres triggersurs, etc. Les triggersurs DML et DDL peuvent être nesteds jusqu'à 32 niveaux. Vous pouvez contrôler si les triggersurs AFTER peuvent être nesteds via l'option de configuration du server de nested sortingggers . Les triggersurs INSTEAD OF (seuls les triggersurs DML peuvent être des triggersurs INSTEAD OF) peuvent être nesteds indépendamment de ce paramètre.

Lorsqu'un triggersur sur la table A se triggers et que la table de triggersment B est mise à jour, le triggersur de la table B s'exécute immédiatement. Le triggersur de la table A ne s'est pas terminé, il est bloqué en attendant la fin de l'instruction UPDATE, qui à son tour attend que le triggersur de la table B se termine. Cependant, les mises à jour de la table A ont déjà eu lieu (en supposant un triggersment AFTER normal) et l'interrogation de la Table A à partir du triggersur de la table B verra les mises à jour.

Si les mises à jour sont séquentiellement codées dans le triggersur UPDATE de A, alors oui.