Qué es un trigger o desencadenador y cómo crearlo?

Un trigger es una clase especial de procedimiento almacenado que se ejecuta automáticamente cuando se produce un evento en el servidor de bases de datos. Los trigger se ejecutan cuando un usuario intenta modificar datos mediante un evento de lenguaje de manipulación de datos (DML). Los eventos DML son instrucciones INSERT, UPDATE o DELETE de una tabla o vista. Estos triggers se activan cuando se desencadena cualquier evento válido, con independencia de que las filas de la tabla se vean o no afectadas.
Temas relacionados:
- Cómo eliminar filas duplicadas en SQL Server, MySql y Oracle
- Cómo eliminar los espacios en blanco en SQL
- ¿Cómo insertar varios registros en un solo INSERT?
- ¿Cómo agregar una columna a una tabla en SQL?
CREATE TRIGGER
La sentencia que se utiliza para añadir triggers al esquema de base de datos es CREATE TRIGGER.
La sintaxis general de un trigger es la siguiente:
CREATE TRIGGER <Schema_Name, sysname, Schema_Name>.<Trigger_Name, sysname, Trigger_Name> ON <Schema_Name, sysname, Schema_Name>.<Table_Name, sysname, Table_Name> AFTER <Data_Modification_Statements, , INSERT,DELETE,UPDATE> AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for trigger here END
Los triggers utilizan dos tablas virtuales denominadas inserted y deleted. SQL Server crea y administra automáticamente ambas tablas. La estructura de las tablas inserted y deleted es la misma que tiene la tabla que ha desencadenado la ejecución del trigger.
La tabla virtual Inserted solo está disponible en las operaciones INSERT y UPDATE y en ella están los valores resultantes después de la inserción o actualización.
La tabla Deleted está disponible en las operaciones UPDATE y DELETE, los valores que tiene esta tabla son los anteriores a la ejecución de la actualización o borrado. Es decir, los datos que serán borrados.
No existe una tabla Updated ya que la actualización reside en Deleted e Inserted.
¿Cómo crear triggers en SQL?
- Abrimos el Microsofr SQL Server Management Studio
- Vamos a nuestra base de datos y extendemos el árbol hasta la tabla que queremos agregar el trigger.
- En la carpeta Triggers damos botón derecho de nuestro mouse y damos clic en “New Trigger.
- Se abrirá una pestaña con la estructura básica de un Trigger y lo modificamos de acuerdo a nuestras necesidades. En el siguiente ejemplo puedes ver cada una de las instrucciones comentadas para que puedas ver que es lo que hace.
--Crea un trigger llamado AddCines CREATE TRIGGER AddCines --Se ejecutara en la tabla Cinemex_Ciudades ON Cinemex_Ciudades --Se ejecutara despues de un Insert o un Update a la tabla AFTER INSERT,UPDATE AS BEGIN -- SET NOCOUNT ON impide que se generen mensajes de texto con cada instrucción SET NOCOUNT ON; -- Se crea un Insert: cuando se inserten valores en la tabla Cinemex_Ciudades, el trigger insertara un registro en la tabla Cinemex_Cines INSERT INTO Cinemex_Cines (ID, IDCiudad, Cine, Direccion) SELECT '500', ID, 'Cinemex ' + Ciudad, 'Prueba' FROM INSERTED --Los valores que se insertaran, seran los que esten almacenados en la tabla virtual Inserted END GO
Dejanos tus comentarios, dudas o sugerencias y pronto te responderemos.