Published on

December 10, 2022

Trabajando con Triggers en SQL Server

Los Triggers son una característica poderosa en SQL Server que te permiten automatizar acciones basadas en ciertos eventos, como insertar, actualizar o eliminar datos en una tabla. Si eres nuevo en el desarrollo de SQL Server y quieres aprender cómo implementar triggers, este artículo es para ti.

Creando un Trigger

Para crear un trigger, se utiliza la sentencia CREATE TRIGGER. Aquí está la sintaxis básica:

CREATE TRIGGER nombre_trigger
EN {nombre_tabla o nombre_vista}
[ CON <Opciones> ]
{ PARA | DESPUÉS | EN LUGAR DE }
{ [INSERT], [UPDATE], [DELETE] }
[ CON APPEND ]
[ NO PARA REPLICACIÓN ]
COMO
{Tu código va aquí}

Existen varias opciones y argumentos que puedes utilizar al crear un trigger, como especificar opciones adicionales, indicar cuándo debe activarse el trigger y definir los eventos DML que harán que el trigger se active. También puedes utilizar opciones como encriptación, ejecutar como, compilación nativa y enlace de esquema para personalizar aún más tu trigger.

Modificando un Trigger

Si necesitas cambiar el código de un trigger existente, tienes algunas opciones:

  • Utilizar la sentencia ALTER TRIGGER
  • Eliminar y volver a crear el trigger
  • Utilizar la sentencia CREATE OR ALTER (disponible solo en SQL Server 2016 y versiones posteriores)

La sentencia ALTER TRIGGER te permite modificar el código de un solo trigger. Puedes utilizar el procedimiento almacenado sp_helptext para recuperar el código del trigger, realizar los cambios necesarios y luego ejecutar la sentencia ALTER TRIGGER.

Eliminando un Trigger

Para eliminar un trigger, puedes utilizar la sentencia DROP TRIGGER. Aquí está la sintaxis:

DROP TRIGGER [ SI EXISTE ] nombre_trigger

La parte SI EXISTE de la sentencia es opcional y se agregó en SQL Server 2016. Te permite eliminar un trigger sin generar un error si el trigger no existe.

Ejemplo

Supongamos que tenemos una tabla llamada Empleados con datos de empleados y una columna llamada GerenteEmpleado que contiene el IDEmpleado del gerente para cada empleado. Queremos crear un trigger que valide el valor de GerenteEmpleado al insertar o actualizar datos en la tabla.

CREATE TRIGGER TR_Empleados
EN dbo.Empleados
DESPUÉS DE INSERTAR, ACTUALIZAR
COMO
SI NO EXISTE (SELECT 0 FROM Inserted I
               INNER JOIN dbo.Empleados E ON I.GerenteEmpleado = E.IDEmpleado
               O I.GerenteEmpleado ES NULO)
COMIENZO
   THROW 51000, 'El gerente debe ser un empleado activo', 1;
FIN

En este ejemplo, el trigger verifica si el valor de GerenteEmpleado existe en la tabla Empleados o si es nulo. Si no existe, se genera un error.

Ahora, cada vez que insertes o actualices datos en la tabla Empleados, el trigger validará automáticamente el valor de GerenteEmpleado.

Los Triggers son una herramienta poderosa en SQL Server que pueden ayudarte a automatizar acciones y garantizar la integridad de los datos. Al comprender cómo crear, modificar y eliminar triggers, puedes llevar tus habilidades de desarrollo de SQL Server al siguiente nivel.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.