Podrás ver claramente el procedimiento para agregar dos disparadores (2 trigger´s). Normalmente su uso lo hacemos para Seguridad de la base de Datos.
mysql> create database pruebas_dispara;
Query OK, 1
row affected (0.05 sec)
mysql> use pruebas_dispara;
Database changed
mysql>
create table clientes(id_cliente int not null auto_increment,nombre varch
ar(100),seccion
varchar(20),accion varchar(10) default 'insertado',primary key(i
d_cliente),key(nombre));
Query OK, 0
rows affected (0.48 sec)
mysql>
describe clientes;
4 rows in
set (0.12 sec)
mysql>
insert into clientes (nombre,seccion) values ('miguel','Informatica'), ('
Rosa','comida'),('maria','ropa'),('albert','informatica'),('jordi','comida');
Query OK, 5
rows affected (0.06 sec)
Records:
5 Duplicates: 0 Warnings: 0
mysql>
select * from clientes;
5 rows in
set (0.00 sec)
mysql>
create table auditoria_clientes (id int not null auto_increment,nombre_an
terior varchar(100),seccion_anterior
varchar(20),nombre_nuevo varchar(100),secci
on_nueva varchar(20),usuario varchar(49),modificado
datetime,proceso varchar(10)
,id_cliente
int(4),primary key(id));
9 rows in
set (0.01 sec)
mysql>
delimiter //
mysql>
create trigger inserta_auditoria_clientes
-> after insert on clientes
-> for each row
-> begin
-> insert into
auditoria_clientes(nombre_nuevo, seccion_nueva, usuario, modi
ficado, proceso, id_cliente)
-> values (new.nombre, new.seccion,
current_user(), now(), new.accion, new.i
d_cliente);
-> end;
-> //
Query OK, 0
rows affected (0.06 sec)
mysql>
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;
-> //
Query OK, 0
rows affected (0.17 sec)
mysql>
create trigger elimina_auditoria_clientes
-> after delete on clientes
-> for each row
-> begin
-> insert into auditoria_clientes(nombre_anterior,seccion_anterior,usuario,m
odificado,id_cliente)
->
values(old.nombre,old.seccion,current_user(),now(),old.id_cliente);
-> end;
-> //
Query OK, 0
rows affected (0.01 sec)
mysql>
delimiter ;
mysql>
show triggers;
3 rows in
set (0.06 sec)
mysql>
insert into clientes(nombre,seccion) values ('Edith Martinez','Informatica');
Query OK, 1
row affected (0.20 sec)
mysql>
select * from clientes;
6 rows in
set (0.00 sec)
mysql>
select * from auditoria_clientes;
1 row in
set (0.01 sec)
mysql>
update clientes set nombre='Jordi Apolinar',seccion='Productividad' where
id_cliente=5;
Query OK, 1
row affected (0.07 sec)
Rows
matched: 1 Changed: 1 Warnings: 0
mysql>
select * from clientes;
6 rows in
set (0.00 sec)
mysql>
select * from auditoria_clientes;
2 rows in
set (0.00 sec)
mysql>
delete from clientes where nombre='Edith Martinez';
Query OK, 1
row affected (0.00 sec)
mysql> select * from clientes;
5 rows in
set (0.00 sec)
mysql>
select * from auditoria_clientes;
3 rows in
set (0.00 sec)
No hay comentarios:
Publicar un comentario