Triggers en MYSQL
En esta ocasion implementamos el uso de triggers al insertar o modificar datos, los cuales mostraran los datos agregados o modificados en otra tabla, asi como incluyendo la hora, y en dicho caso, el nombre anterior y el nombre nuevo.
Comenzamos con la creacion de la base de datos, tabla productos y tabla bitacora
CREATE DATABASE empresa;
Use empresa;
CREATE TABLE productos(
IdProducto INT NOT NULL AUTO_INCREMENT,
NombreProducto VARCHAR(45) NOT NULL,
TipoProducto VARCHAR(45) NOT NULL,
PrecioProducto VARCHAR(10) NOT NULL,
PRIMARY KEY(IdProducto) );
CREATE TABLE BitacoraProductos(
IdBP INT(30) AUTO_INCREMENT PRIMARY KEY,
IdProductos INT(20),
NombreProducto_Nuevo VARCHAR(30),
NombreProducto_Viejo VARCHAR (30),
TipoProducto_Nuevo VARCHAR(30),
TipoProducto_Viejo VARCHAR(30),
PrecioProducto_Nuevo VARCHAR(30),
PrecioProducto_Viejo VARCHAR(30),
Usuario VARCHAR(30),
Fecha DATETIME,
Accion VARCHAR(30)) ENGINE=innodb;
Creacion del trigger Insertar
CREATE TRIGGER InsertarProductos AFTER INSERT
ON productos
FOR EACH ROW
INSERT INTO BitacoraProductos(IdProductos,NombreProducto_Nuevo,TipoProducto_Nuevo,PrecioProducto_Nuevo,Usuario,Fecha,Accion)
VALUES (NEW.IdProducto,NEW.NombreProducto,NEW.TipoProducto,NEW.PrecioProducto,USER(),NOW(),'Inserto');
Insertamos datos y revisamos la tabla bitacora
Creacion y uso del trigger Modificar
CREATE TRIGGER ModificarProductos AFTER UPDATE
ON productos
FOR EACH ROW
INSERT INTO BitacoraProductos(IdProductos,NombreProducto_Nuevo,NombreProducto_Viejo,TipoProducto_Nuevo,TipoProducto_Viejo,PrecioProducto_Nuevo,PrecioProducto_Viejo,Usuario,Fecha,Accion)
VALUES (OLD.IdProducto,NEW.NombreProducto,OLD.NombreProducto,NEW.TipoProducto,OLD.TipoProducto,NEW.PrecioProducto,OLD.PrecioProducto,USER(),NOW(),'Modifico');
Modificamos datos y revisamos la tabla
Creacion y uso del trigger Eliminar
CREATE TRIGGER EliminarProductos AFTER DELETE
ON productos
FOR EACH ROW
INSERT INTO BitacoraProductos(IdProductos,NombreProducto_Viejo,TipoProducto_Viejo,PrecioProducto_Viejo,Usuario,Fecha,Accion)
VALUES (OLD.IdProducto,OLD.NombreProducto,OLD.TipoProducto,OLD.PrecioProducto,USER(),NOW(),'Elimino');
Eliminamos datos y verificamos la tabla bitacora










Comentarios
Publicar un comentario