jueves, 30 de mayo de 2013

Practica 11 manejo de disparadores con criterios de selección

Creamos una base de datos llamada biblioteca:

create database biblioteca;
Usamos la base de datos antes creada:
use biblioteca;
Creamos una tabla llamada autor y describimos esta misma tabla creada:
create table autor(codigo int not null auto_increment primary key,nombre
varchar (30));
describe autor;
Creamos una tabla llamada libros y describimos esta misma tabla creada:
create table libros(codigo int not null auto_increment primary key,titulo
 varchar(30),ISBN varchar(30),editorial varchar(30),num_paginas int);
describe libros;

Creamos una tabla llamada usuarios y describimos esta misma tabla creada:
create table usuarios(codigo_usuario int not null auto_increment primary
key,nombre varchar(30),direccion varchar(50),telefono varchar(30),codigo_ajempla
r int);
describe usuarios;

Creamos una tabla llamada ejemplares y describimos esta misma tabla creada:
create table ejemplares(codigo_ajemplar int not null auto_increment prima
ry key,localizacion varchar(30));
describe ejemplares;

Ahora insertaremos 3 registros a nuestra tabla usuarios:
insert into usuarios(nombre,direccion,telefono,codigo_ejemplar) values
('Miguel','Ave signos 23','53221234',3),
('Pedro','Calle Tulipanes','54321234',4),
('Amanda','Ave. Constelacion','56433245',5);

Mostraremos la tabla antes creada:
Select * from usuarios;
Creamos una tabla llamada ejemplares y describimos esta misma tabla creada:
create table copia_usuario(codigo int not null auto_increment primary key,
nombre_ant varchar(30),
direccion_anterior varchar(50),
telefono_anterior varchar(50),
codigo_ajemplar_anterior int,
nombre_nuevo varchar(30),
direccion_nueva varchar(50),
telefono_nuevo varchar(30),
codigo_ajemplar_nuevo int,
usuario varchar(40),
modificado datetime,
codigo_usuario int(4));
describe copia_usuario;

Cambiamos el delimitador y enseguida creamos un trigger que nos ayudara a guardar los usuarios que eliminaron de nuestra tabla usuarios:
delimiter //
create trigger elimina_usuarios_ejemplares
after delete on usuarios
for each row
begin
insert into
copia_usuario(nombre_ant,direccion_anterior,telefono_anterior,codigo_ajemplar_anterior,usuario,modificado,codigo_usuario)
values (OLD.nombre,OLD.direccion,OLD.telefono,OLD.codigo_ajemplar,CURRENT_USER(),NOW(),OLD.codigo_usuario);
end;
//

Cambiamos el delimitador y enseguida mostraremos la tabla de usuarios:
delimiter ;
select * from usuarios;
Borraremos un registro de nuestra tabla usuarios:
delete from usuarios where codigo_ajemplar=4;
Mostramos nuestra tabla de usuarios para ver la modificación que se realizo:
select * from usuarios;
Ahora mostraremos la tabla copia_usuario para ver los registros antes eliminados:
select * from copia_usuario;

No hay comentarios:

Publicar un comentario