Artículos de Tecnología > Data Science

Qué es y cómo usar un trigger en SQL

Philemon Delva
Philemon Delva
img-capa

Cuando trabajamos con bases de datos relacionales, muchas veces necesitamos realizar una acción específica en respuesta a un evento, como una inserción (INSERT), una actualización (UPDATE) o una eliminación (DELETE). Esto es precisamente lo que nos permite hacer un trigger en SQL.

Qué es y cómo usar un trigger en SQL

Un trigger es un procedimiento almacenado en la base de datos que se ejecuta automáticamente cada vez que ocurre un evento especial en la base de datos. Por ejemplo, un desencadenante puede activarse cuando se inserta una fila en una tabla específica o cuando ciertas columnas de la tabla se actualizan.

Por lo general, estos eventos que desencadenan los triggers son cambios en las tablas mediante operaciones de inserción, eliminación y actualización de datos (insert, delete y update).

Hay dos clases de Triggers en SQL

Triggers DDL (Data Definition Language): Esta clase de Triggers se activa en eventos que modifican la estructura de la base de datos (como crear, modificar o eliminar una tabla) o en ciertos eventos relacionados con el servidor, como cambios de seguridad o actualización de eventos estadísticos.

Triggers DML (Data Modification Language): Esta es la clase más común de Triggers. En este caso, el evento de disparo es una declaración de modificación de datos; podría ser una declaración de inserción, actualización o eliminación en una tabla o vista.

Los Triggers DML tienen diferentes tipos

FOR o AFTER [INSERT, UPDATE, DELETE]: Estos tipos de Triggers se ejecutan después de completar la instrucción de disparo (inserción, actualización o eliminación).

INSTEAD OF [INSERT, UPDATE, DELETE]: A diferencia del tipo FOR (AFTER), los Triggers INSTEAD OF se ejecutan en lugar de la instrucción de disparo. En otras palabras, este tipo de trigger reemplaza la instrucción de disparo. Son de gran utilidad en los casos en los que es necesario tener integridad referencial entre bases de datos.

Ventajas de los Triggers

Cómo usar un Trigger en SQL

La instrucción CREATE TRIGGER permite crear un nuevo trigger que se activa automáticamente cada vez que ocurre un evento, como INSERT, DELETE o UPDATE, en una tabla.

La sintaxis de la instrucción CREATE TRIGGER:

CREATE  TRIGGER  [Nombre_Trigger] // es el nombre definido por el usuario para el nuevo Trigger
ON  [Nombre_tabla] // es la tabla a la que se aplica Trigger.
AFTER {[INSERT],[UPDATE],[DELETE]} 
[NOT  FOR  REPLICATION] // Esta opción indica a SQL Server que no active el disparador cuando la modificación de datos se realiza como parte de un proceso de replicación.
AS
{sql_statements}

La sintaxis anterior es genérica, pero sirve de base para la mayoría de bases de datos, como veremos a continuación.

Ejemplo de Triggers en Oracle

Oracle también permite especificar el evento que activará el trigger y el momento de ejecución.

Un trigger es un bloque llamado PL/SQL (un lenguaje para desarrollar programas dentro del servidor de base de datos Oracle) almacenado en la base de datos Oracle y se ejecuta automáticamente cuando ocurre un evento de trigger.

En Oracle, puedes definir procedimientos que se ejecutan implícitamente cuando se emite una instrucción INSERT, UPDATE o DELETE en la tabla asociada. Estos procedimientos se llaman triggers de base de datos.

Existen seis instrucciones CREATE TRIGGER según sus puntos de disparo.

CREATE  [OR  REPLACE]  TRIGGER  trigger_name
{BEFORE  |  AFTER  }  triggering_event  ON  table_name
[FOR  EACH  ROW]
[FOLLOWS  |  PRECEDES  another_trigger]
[ENABLE  /  DISABLE  ]
[WHEN  condition]
DECLARE
declaration  statements
BEGIN
executable  statements
EXCEPTION
exception_handling  statements
END;

Si no incluyes las palabras clave OR REPLACE, recibirás un mensaje de error que indica que otro objeto está utilizando el nombre de tu trigger.

Ejemplo de Triggers en MySQL

El Trigger en MySQL es un objeto de base de datos asociado a una tabla. Se activa cuando se realiza una acción definida en la tabla. El trigger se puede ejecutar cuando realizas una de las siguientes instrucciones de MySQL en la tabla: INSERT, UPDATE y DELETE, y se puede activar antes o después del evento.

delimiter //
CREATE TRIGGER nombre_Trigger
AFTER INSERT ON usuario_voto
FOR EACH ROW
BEGIN
Aquí se coloca la estructura de Trigger.
END //
delimiter ;

Comandos comunes

Para eliminar un trigger, puedes usar el comando: DROP TRIGGER nombre_del_trigger;

Para ver todos los triggers, puedes usar el comando: SHOW TRIGGERS;

Conclusión

Hemos visto que los triggers en SQL son muy útiles cuando necesitamos disparar eventos de forma automática cuando ocurre algún eventos automáticamente cuando ocurre un evento importante para nosotros, como una inserción (INSERT) en una tabla de intereses. De esta forma, los valores de otras tablas deberían actualizarse automáticamente y podemos lograrlo con triggers.

¿Te gustó el artículo y quieres saber más sobre SQL y triggers? Aquí en Alura, ofrecemos una Formación SQL con MySQL y una Formación SQL con Microsoft SQL Server 2019 que te enseñará cómo utilizar triggers y mucho más.

Este artículo fue traducido para Alura por Philemon Delva

Este artículo fue traducido para Alura Latam por Brenda Souza

Artículos de Tecnología > Data Science

En Alura encontrarás variados cursos sobre Data Science. ¡Comienza ahora!

Precios en:
USD
  • USD
  • BOB
  • CLP
  • COP
  • USD
  • PEN
  • MXN
  • UYU

Semestral

  • 273 cursos

    Cursos de Programación, Front End, Data Science, Innovación y Gestión.

  • Videos y actividades 100% en Español
  • Certificado de participación
  • Estudia las 24 horas, los 7 días de la semana
  • Foro y comunidad exclusiva para resolver tus dudas
  • Luri, la inteligencia artificial de Alura

    Luri es nuestra inteligencia artificial que resuelve dudas, da ejemplos prácticos y ayuda a profundizar aún más durante las clases. Puedes conversar con Luri hasta 100 mensajes por semana

  • Acceso a todo el contenido de la plataforma por 6 meses
US$ 65.90
un solo pago de US$ 65.90
¡QUIERO EMPEZAR A ESTUDIAR!

Paga en moneda local en los siguientes países

Anual

  • 273 cursos

    Cursos de Programación, Front End, Data Science, Innovación y Gestión.

  • Videos y actividades 100% en Español
  • Certificado de participación
  • Estudia las 24 horas, los 7 días de la semana
  • Foro y comunidad exclusiva para resolver tus dudas
  • Luri, la inteligencia artificial de Alura

    Luri es nuestra inteligencia artificial que resuelve dudas, da ejemplos prácticos y ayuda a profundizar aún más durante las clases. Puedes conversar con Luri hasta 100 mensajes por semana

  • Acceso a todo el contenido de la plataforma por 12 meses
US$ 99.90
un solo pago de US$ 99.90
¡QUIERO EMPEZAR A ESTUDIAR!

Paga en moneda local en los siguientes países

Acceso a todos
los cursos

Estudia las 24 horas,
dónde y cuándo quieras

Nuevos cursos
cada semana