Triggers en MySQL

Disponibles a partir de MySQL 5.0.2 Los Triggers o disparadores permiten ejecutar sentencias en un momento determinado. Implica que parte de la lógica no está en el código y puede dificultar su localización (especialmente para personal nuevo en el proyecto, etc…) Recomendable su uso para cálculos o consistencia de datos (borrados en cascada p.e.). Sintaxis:

CREATE TRIGGER nombre_disp momento_disp evento_disp ON nombre_tabla FOR EACH ROW sentencia_disp
  • nombre_disp: nombre del trigger
  • momento_disp: before/after
  • evento_disp: insert/update/delete

(No puede haber dos disparadores en una misma tabla que correspondan al mismo momento y sentencia)

  • nombre_tabla
  • sentencia_disp: Comando a ejecutar

Ejemplo:

CREATE TABLE test1(a1 INT);

CREATE TABLE test2(a2 INT);

DELIMITER | //Se cambia el delimitador para poder incluir varias querys dentro

CREATE TRIGGER testref AFTER INSERT ON test1

FOR EACH ROW

BEGIN

INSERT INTO test2 SET a2 = NEW.a1; //Query con delimitador standard dentro del trigger

END

|//Fin de la declaración del trigger

DELIMITER ;

Notas:

  • El alias OLD hace referencia a un registro ya existente antes de un update o delete.
  • El alias NEW hace referencia a un registro nuevo después de un insert o update.
  • La sentencia CREATE TRIGGER necesita el privilegio SUPER.

Limitaciones (dependiendo de la versión de MySQL):

  • Un trigger no puede hacer referencia a una tabla por su nombre, excepto a través de OLD y NEW (sólo aplicable a comandos SELECT)
  • Un trigger no puede hacer llamadas a stored procedures (no se puede usar la sentencia CALL)
  • No pueden utilizarse transacciones en un trigger

También te puede interesar...

Lenguajes de Programación

Funciones en MySQL

31 Octubre 2013 Sergio Perales
Lenguajes de Programación

Stored procedures en MySQL

28 Octubre 2013 Sergio Perales
Creación y administración de Bases de Datos

Curso de creación y administración de Bases de Datos SQL

4 horas y 12 segundos · curso

  • Bases de datos

Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información.