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:

  1. 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.
  2. 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.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow