Skip to content

Triggers

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.


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, UPDATE o DELETE en una tabla o vista.
  • Trigger DDL (Data Definition Language): Se ejecutan en respuesta a eventos DDL, como las instrucciones CREATE, ALTER o DROP de objetos en la base de datos.

CREATE TRIGGER Trigger_Name
ON Table_Name
AFTER INSERT, DELETE, UPDATE
AS
BEGIN
SET NOCOUNT ON;
-- Sentencias a ejecutar dentro del trigger
END

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ón INSERT o UPDATE.
  • DELETED: Contiene los valores originales de las filas antes de una operación DELETE o UPDATE.

Este trigger registra los pedidos en una tabla histórica después de cada inserción.

CREATE TRIGGER tr_addpedidotohistorico
ON pedidos
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO Historico_pedidos (total_pedido, estado_pedido, fecha_modificacion)
SELECT importe, 1, getdate()
FROM INSERTED
END