Triggers – Disparadores MySQL

Saludos, en ocasiones necesitamos conocer cuales son los datos insertados, modificados o borrados, es posible conocer esto para almacenarlos en una tabla donde tengamos el control de nuestras tablas para su uso posterior, debemos utilizar TRIGGERs o disparadores.
 
Crearemos nuestra tabla de ejemplo:
CREATE TABLE tablaPruebas ( 
 cve TINYINT
 , nombre VARCHAR(30)
 , fecha DATE
)
Después crearemos nuestro TRIGGER en el cual podemos especificar las tablas virtuales INSERTED y DELETED, donde indicaremos que se dispare después de un INSERT, UPDATE o DELETE y que haga una consulta a las tablas lógicas antes mencionadas para ver su contenido.
CREATE TRIGGER dbo.triggerTablaPruebas ON tablaPruebas
AFTER INSERT, UPDATE, DELETE
AS
 SELECT * FROM deleted; 
 SELECT * FROM inserted;
Insertamos algunos datos:
INSERT INTO tablaPruebas
VALUES( 1, 'PEDRO' , '20130101' ) 
, ( 2 , 'JUAN', '20130403' )

Como podemos observar solo hay datos en la tabla INSERTED.

Ahora modificaremos una fila:
UPDATE tablaPruebas
SET nombre = 'LUIS' , fecha = '20101212'
WHERE cve = 2
El resultado es:

Es necesario especificar que no existe una tabla virtual UPDATED, el funcionamiento es parecido o idéntico a eliminar y después insertar.

DELETE

DELETE FROM tablaPruebas
WHERE cve = 1

Si necesitamos de los valores antes que sufran algún cambio o si necesitamos llevar la bitácora de cambios, esto es una buena idea que nos puedes ser de gran ayuda.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *