Triggers – Disparadores MySQL

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.

Leave a Reply

Your email address will not be published. Required fields are marked *