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

Entradas populares de este blog

Teoria Unidad 3: Configuración y administración del espacio en disco

Relación del DBA con otras áreas de la Sistemas

Teoria Unidad 5: Seguridad