Los Triggers o Disparadores son objetos que se asocian con tablas y se almacenan en la base de datos. Su nombre se deriva por el comportamiento que presentan en su funcionamiento, ya que se ejecutan cuando sucede algún evento sobre las tablas a las que se encuentra asociado. Los eventos que hacen que se ejecute un trigger son las operaciones de inserción (INSERT), borrado (DELETE) o actualización (UPDATE), ya que modifican los datos de una tabla.

La utilidad principal de un trigger es mejorar la administración de la base de datos, ya que no requieren que un usuario los ejecute. Por lo tanto, son empleados para implementar las REGLAS DE NEGOCIO (tipo especial de integridad) de una base de datos. Una Regla de Negocio es cualquier restricción, requerimiento, necesidad o actividad especial que debe ser verificada al momento de intentar agregar, borrar o actualizar la información de una base de datos. Un trigger puede prevenir errores en los datos, modificar valores de una vista, sincronizar tablas, entre otros.

Un trigger presenta la siguiente estructura básica:

  • Una llamada de activación, la cual es una sentencia que permite la ejecución del código.
  • Una condición necesaria para que se realice el código.
  • La secuencia de instrucciones a ejecutar una vez que se han cumplido las condiciones iniciales.

Un trigger se puede ejecutar antes (BEFORE) o desués (AFTER) de que sean modificados los datos. Además manejan dos palabras clave, OLD y NEW. Estas palabras se refieren a los valores que tienen las columnas antes y después de la modificación. La operación INSERT permiten el uso de NEW, la DELETE sólo OLD y UPDATE ambas.

La sintaxis de un trigger es la siguiente:

CREATE [OR REPLACE] TRIGGER
{BEFOREAFTER} {DELETEINSERTUPDATE [OF col1, col2, …, colN]
[OR {DELETEINSERTUPDATE [OF col1, col2, …, colN]…]}
ON
[FOR EACH ROW [WHEN ()]]
DECLARE — variables locales
BEGIN — Sentencias
[EXCEPTION] — Sentencias control de excepción
END ;

Ejemplo

Se requiere guardar los datos que se modifican de un cliente en otra tabla que servirá de auditoría.

1. Crea la tabla de clientes
CREATE TABLE clientes( id int not null auto_increment, nombre varchar(20), seccion varchar(10), PRIMARY KEY(id) ) ENGINE = InnoDB;

2. Agrega algunos registros
INSERT INTO clientes (nombre, seccion) VALUES (‘Miguel’,’informatica’), (‘Rosa’,’comida’), (‘Maria’,’ropa’), (‘Albert’,’informatica’), (‘Jordi’,’comida’);

3. Crea la tabla auditoria_clientes que guardará los registros modificados
CREATE TABLE auditoria_clientes (id int not null auto_increment, nombre varchar(20), anterior_seccion varchar(10), usuario varchar(40), modificado datetime, primary key(id) ) ENGINE = InnoDB;

Crea el trigger que se disparará cada vez que alguien modifique un dato de la tabla clientes y lo guardará en la tabla auditoria_clientes junto al nombre del usuario y la fecha.
CREATE TRIGGER trigger_auditoria_clientes AFTER UPDATE ON clientes
FOR EACH ROW
INSERT INTO auditoria_clientes(name, anterior_seccion, usuario, modificado )
VALUES (OLD.nombre, OLD.seccion, CURRENT_USER(), NOW() );

Powered By DT Author Box

Written by admin

Disparadores o Triggers

7 thoughts on “Disparadores o Triggers

Leave a Reply

Follow

Get every new post delivered to your Inbox

Join other followers:

%d bloggers like this: