Primero debemos crear la base de datos empresa y crear tabla productos con los siguientes campos:
int IdProductos (20) PK
char NombreProducto (30)
char TipoProducto (30)
int PrecioProducto (20)
De ahí crearemos nuestra tabla BitacoraProductos (registro) y nuestros triggers con el siguiente comando:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE DATABASE empresa; | |
USE empresa; | |
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(15)) engine =innodb; | |
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.IdProductos,NEW.NombreProducto,NEW.TipoProducto,NEW.PrecioProducto, USER(),NOW(),'Inserto'); | |
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.IdProductos,NEW.NombreProducto,old.NombreProducto,NEW.TipoProducto,old.TipoProducto,NEW.PrecioProducto,old.PrecioProducto, USER(),NOW(),'Modifico'); | |
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.IdProductos,old.NombreProducto,old.TipoProducto,old.PrecioProducto,USER(),NOW(),'Eliminar'); | |
DROP TRIGGER InsertarProductos; | |
DROP TRIGGER ModificarProductos; | |
DROP TRIGGER EliminarProductos; | |
SELECT * FROM Productos; | |
SELECT * FROM BitacoraProductos; |
Nuestra tabla productos se ve así:
Nuestra bitácora (cambié el precio del Dron de 25,000 a 30,000):
Como podemos ver registra quién cambió el precio y el precio viejo, ayudándonos a saber los cambios hechos y quién los realizó.