Différence entre un déclencheur FOR et AFTER?

Quelle est la différence entre un déclencheur FOR et AFTER?

Il n’y a pas de différence, ils font la même chose.

CREATE TRIGGER trgTable on dbo.Table FOR INSERT,UPDATE,DELETE 

Est le même que

 CREATE TRIGGER trgTable on dbo.Table AFTER INSERT,UPDATE,DELETE 

Un déclencheur INSTEAD OF est différent et se déclenche avant et à la place de l’insertion et peut être utilisé sur des vues afin d’insérer les valeurs appropriées dans les tables sous-jacentes.

@Ben a tout à fait raison.

Voici l’article MSDN Exploration des déclencheurs SQL Server

Un paragraphe de l’article:

Cette syntaxe est également acceptable dans les anciennes versions de SQL Server. Cependant, maintenant qu’il existe deux types de déclencheurs dans SQL Server 2000, je préfère faire référence aux déclencheurs FOR en tant que déclencheurs AFTER. Ainsi, pour le rest de cet article, je me référerai soit aux déclencheurs APRÈS ou AUTRE D’AUTRE.

Comme le déclencheur AFTER que vous avez vu précédemment, ce déclencheur empêche les modifications apscopes au champ nom de famille. Cependant, il implémente cette règle de gestion différemment de l’exemple précédent. Étant donné que le déclencheur INSTEAD OF se déclenche à la place de l’instruction UPDATE, le déclencheur INSTEAD OF évalue ensuite si le test de la règle métier réussit ou non. Si le test de la règle métier réussit, pour que la mise à jour se produise, le déclencheur INSTEAD OF doit invoquer explicitement l’instruction UPDATE.

AFTER spécifie que le déclencheur DML est déclenché uniquement lorsque toutes les opérations spécifiées dans l’instruction SQL de déclenchement ont été exécutées avec succès. Toutes les actions en cascade référentielles et les vérifications de contraintes doivent également réussir avant que ce déclenchement ne soit déclenché. AFTER est la valeur par défaut lorsque FOR est le seul mot-clé spécifié.

Les déclencheurs APRES ne peuvent pas être définis sur les vues.

INSTEAD OF Spécifie que le déclencheur DML est exécuté à la place de l’instruction SQL de déclenchement, remplaçant ainsi les actions des instructions de déclenchement. INSTEAD OF ne peut pas être spécifié pour les déclencheurs DDL ou d’ouverture de session.

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-sortinggger-transact-sql