sábado, 25 de mayo de 2013

Triggers (2 Disparadores)

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));
Query OK, 0 rows affected (0.05 sec)








mysql> describe auditoria_clientes;












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