Triggers
📘 Introducción
Section titled “📘 Introducción”Un trigger es un conjunto de sentencias SQL que residen en memoria. Es un tipo especializado de procedimiento almacenado que se ejecuta automáticamente cuando ocurre un evento predefinido sobre una tabla o base de datos. Mientras que un procedimiento almacenado debe ser invocado manualmente, un trigger se dispara automáticamente en respuesta a un evento.
🧩 Tipos de Triggers
Section titled “🧩 Tipos de Triggers”SQL Server proporciona dos tipos principales de triggers:
- Trigger DML (Data Manipulation Language): Se ejecutan cuando un usuario intenta modificar datos a través de eventos DML, como las instrucciones
INSERT,UPDATEoDELETEen una tabla o vista. - Trigger DDL (Data Definition Language): Se ejecutan en respuesta a eventos DDL, como las instrucciones
CREATE,ALTERoDROPde objetos en la base de datos.
🧱 Estructura
Section titled “🧱 Estructura”Estructura
Section titled “Estructura”CREATE TRIGGER Trigger_NameON Table_NameAFTER INSERT, DELETE, UPDATEASBEGIN SET NOCOUNT ON; -- Sentencias a ejecutar dentro del triggerENDTablas Especiales: INSERTED y DELETED
Section titled “Tablas Especiales: INSERTED y DELETED”Los triggers DML utilizan dos tablas especiales, INSERTED y DELETED, que tienen la misma estructura que la tabla sobre la que se define el trigger.
INSERTED: Contiene los nuevos valores de las filas afectadas por una operaciónINSERToUPDATE.DELETED: Contiene los valores originales de las filas antes de una operaciónDELETEoUPDATE.
🧪 Ejemplos
Section titled “🧪 Ejemplos”Ejemplo 1: Log de Cambios
Section titled “Ejemplo 1: Log de Cambios”Este trigger registra los pedidos en una tabla histórica después de cada inserción.
CREATE TRIGGER tr_addpedidotohistoricoON pedidosAFTER INSERTASBEGIN SET NOCOUNT ON; INSERT INTO Historico_pedidos (total_pedido, estado_pedido, fecha_modificacion) SELECT importe, 1, getdate() FROM INSERTEDEND