Microsoft SQL Server
Desencadenar
Buscar..
Introducción
Un disparador es un tipo especial de procedimiento almacenado, que se ejecuta automáticamente después de que ocurre un evento. Hay dos tipos de desencadenadores: desencadenadores de lenguaje de definición de datos y desencadenadores de lenguaje de manipulación de datos.
Normalmente está ligado a una mesa y se dispara automáticamente. No puedes llamar explícitamente a ningún disparador.
Tipos y clasificaciones de gatillo
En SQL Server, hay dos categorías de desencadenantes: Desencadenadores DDL y Desencadenadores DML.
Los disparadores DDL se activan en respuesta a los eventos del lenguaje de definición de datos (DDL). Estos eventos corresponden principalmente a las instrucciones Transact-SQL que comienzan con las palabras clave CREATE
, ALTER
y DROP
.
Los disparadores de DML se activan en respuesta a los eventos del lenguaje de manipulación de datos (DML). Estos eventos corresponden a las instrucciones Transact-SQL que comienzan con las palabras clave INSERT
, UPDATE
y DELETE
.
Los disparadores de DML se clasifican en dos tipos principales:
Después de los disparadores (para los disparadores)
- DESPUÉS DE INSERTAR el gatillo.
- DESPUÉS DE ACTUALIZACIÓN Trigger.
- DESPUÉS DE BORRAR el disparador.
En lugar de desencadenantes
- INSTEAD OF INSERT Trigger.
- EN LUGAR DE ACTUALIZAR el disparador.
- INSTEAD DE DELETE Trigger.
Activadores de DML
Los activadores de DML se activan como respuesta a las declaraciones de dml ( insert
, update
o delete
).
Se puede crear un activador de dml para tratar uno o más eventos de dml para una sola tabla o vista. Esto significa que un solo activador de dml puede manejar la inserción, actualización y eliminación de registros de una tabla o vista específica, pero solo puede manejar los datos que se cambian en esa tabla o vista individual.
Los activadores DML brindan acceso a las tablas inserted
y deleted
que contienen información sobre los datos que fueron afectados por la inserción, actualización o eliminación de la declaración que activó el activador.
Tenga en cuenta que los activadores DML se basan en sentencias, no en filas. Esto significa que si la declaración efectuó más de una fila, las tablas insertadas o eliminadas contendrán más de una fila.
Ejemplos:
CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething
FOR INSERT
AS
INSERT INTO tblAudit (TableName, RecordId, Action)
SELECT 'tblSomething', Id, 'Inserted'
FROM Inserted
GO
CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething
FOR UPDATE
AS
INSERT INTO tblAudit (TableName, RecordId, Action)
SELECT 'tblSomething', Id, 'Updated'
FROM Inserted
GO
CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething
FOR DELETE
AS
INSERT INTO tblAudit (TableName, RecordId, Action)
SELECT 'tblSomething', Id, 'Deleted'
FROM Deleted
GO
Todos los ejemplos anteriores agregarán registros a tblAudit cada vez que se agregue, borre o actualice un registro en tblSomething.