miércoles, 29 de mayo de 2013

Disparadores, Insert, delete y update

CREATE DATABASE pruebas_dispara;
Use pruebas_dispara;
CREATE TABLE clientes(id_cliente int not null auto_increment,
nombre varchar(100),seccion varchar(20),
Accion varchar(10) default 'Insertado',
PRIMARY KEY(id_cliente),
KEY(NOMBRE));
DESCRIBE clientes;


INSERT INTO clientes(nombre,seccion) VALUES
('Miguel','Informatica'),
('Rosa','Comida'),
('Maria','Ropa'),
('Albert','Informatica'),
('Jordi','Comida');
select * from clientes;



CREATE TABLE auditoria_clientes(id int not null auto_increment,
nombre_anterior varchar(100),
seccion_anterior varchar(20),
nombre_nuevo varchar(100),
seccion_nueva varchar(20),
usuario varchar(40),
modificado datetime,
proceso varchar(10),
Id_cliente int(4),
primary key(id));
DESCRIBE auditoria_clientes;
DELIMITER //
CREATE TRIGGER Inserta_auditoria_clientes
AFTER INSERT ON clientes
FOR EACH ROW
BEGIN
INSERT INTO auditoria_clientes(nombre_nuevo,seccion_nueva,usuario,modificado,proceso,Id_Cliente)
VALUES (NEW.nombre,NEW.seccion,CURRENT_USER(),NOW(),NEW.Accion,NEW.id_cliente);
END;
//
CREATE TRIGGER Modifica_auditoria_clientes


BEFORE UPDATE ON clientes
FOR EACH ROW
BEGIN
INSERT INTO auditoria_clientes(nombre_anterior,seccion_anterior,nombre_nuevo,seccion_nueva,usuario,modificado,Id_Cliente)
VALUES(OLD.nombre,OLD.seccion,NEW.nombre,NEW.seccion,CURRENT_USER(),NOW(),NEW.id_cliente);
END;
//
CREATE TRIGGER Elimina_auditoria_clientes
AFTER DELETE ON clientes
FOR EACH ROW
BEGIN
INSERT INTO auditoria_clientes(nombre_anterior,seccion_anterior,usuario,modificado,Id_Cliente)
VALUES(OLD.nombre,OLD.seccion,CURRENT_USER(),NOW(),OLD.id_cliente);
END;
//
DELIMITER ;
SHOW TRIGGERS:


INSERT INTO CLIENTES(nombre,seccion) VALUES('Edith Martinez','Informatica');
select * from clientes;

select * from auditoria_clientes;

UPDATE CLIENTES SET NOMBRE='JORDI APOLINAR',SECCION='PRODUCTIVIDAD'WHERE ID_CLIENTE=5;
select * from clientes;
select * from auditoria_clientes;

DELETE FROM CLIENTES WHERE NOMBRE='Edith Martinez';
select * from clientes;
select * from auditoria_clientes;

No hay comentarios:

Publicar un comentario