tutorial trigger tipos inserted examples estructura developer delete sql sql-server-2005 triggers

tipos - triggers de sql



¿Diferencia entre un gatillo FOR y AFTER? (3)

¿Cuál es la diferencia entre un gatillo FOR y AFTER?


DESPUÉS especifica que el desencadenador DML se activa solo cuando todas las operaciones especificadas en la declaración de SQL desencadenante se han ejecutado correctamente. Todas las acciones en cascada referenciales y las verificaciones de restricciones también deben tener éxito antes de que se dispare este disparador. DESPUÉS es el valor predeterminado cuando FOR es la única palabra clave especificada.

DESPUÉS de desencadenantes no se pueden definir en las vistas.

EN LUGAR DE Especifica que el desencadenador DML se ejecuta en lugar de la instrucción SQL desencadenante, por lo tanto, anula las acciones de las instrucciones desencadenantes. INSTEAD OF no se puede especificar para los desencadenadores DDL o de inicio de sesión.

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


No hay diferencia, hacen lo mismo.

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

Es lo mismo que

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

Un desencadenador INSTEAD OF es diferente y se activa antes y en lugar de la inserción y se puede usar en vistas para insertar los valores apropiados en las tablas subyacentes.


share tiene toda la razón.

Aquí está el artículo de MSDN Explorando los desencadenadores de SQL Server

Un párrafo del artículo:

Esa sintaxis también es aceptable en versiones anteriores de SQL Server. Sin embargo, ahora que hay dos tipos de desencadenadores en SQL Server 2000, prefiero referirme a desencadenadores FOR como desencadenadores DESPUÉS. Por lo tanto, para el resto de este artículo me referiré a desencadenantes AFTER o INSTEAD OF.

Al igual que el disparador AFTER que vio antes, este disparador evita que se realicen cambios en el campo de apellido. Sin embargo, implementa esta regla comercial de forma diferente que el ejemplo anterior. Como el desencadenador INSTEAD OF activa en lugar de la instrucción UPDATE, el desencadenador INSTEAD OF evalúa si la prueba de la regla comercial se aprueba o no. Si se aprueba la prueba de la regla de negocios, para que se produzca la actualización, el desencadenador INSTEAD OF debe invocar explícitamente la instrucción UPDATE.