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.
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).
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.
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.
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.
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.
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 ;
Para eliminar un trigger, puedes usar el comando: DROP TRIGGER nombre_del_trigger;
Para ver todos los triggers, puedes usar el comando: SHOW TRIGGERS;
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
Cursos de Programación, Front End, Data Science, Innovación y Gestión.
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
Paga en moneda local en los siguientes países
Cursos de Programación, Front End, Data Science, Innovación y Gestión.
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
Paga en moneda local en los siguientes países
Puedes realizar el pago de tus planes en moneda local en los siguientes países:
País | |||||||
---|---|---|---|---|---|---|---|
Plan Semestral |
487.37
BOB |
69289.36
CLP |
307472.10
COP |
65.90
USD |
264.35
PEN |
1435.53
MXN |
2978.57
UYU |
Plan Anual |
738.82
BOB |
105038.04
CLP |
466107.17
COP |
99.90
USD |
400.74
PEN |
2176.17
MXN |
4515.32
UYU |
Acceso a todos
los cursos
Estudia las 24 horas,
dónde y cuándo quieras
Nuevos cursos
cada semana