Está en la página 1de 5

CREATER TRIGGER Un disparador es un objeto con nombre en una base de datos que se asocia con una tabla, y se activa

cuando ocurre un evento en particular para esa tabla. El disparador queda asociado a la tabla nombre_tabla. Esta debe ser una tabla permanente, no puede ser una tabla TEMPORARY ni una vista.

Crear un TRIGGER sobe la tabla ventas que registre en la tabla Altera_Ventas si algn usuario cambio la clave de algn vendedor que haya realizada una venta de dicho producto.

1 .- Crearemos una tabla donde quedaran almacenados todos los registros de las alteraciones que se piden. CREATE TABLE Altera_ventas (id int not null auto_increment, id_prod Integer(3), id_autentic_vendedor Integer(3), Momento_Exacto_Alter datetime, User_Modifico varchar(40), primary key(id)) ENGINE = InnoDB; 2.- Crear el trigger llamado alteraciones_ventas CREATE TRIGGER alteraciones_venta AFTER UPDATE ON ventas FOR EACH ROW INSERT INTO Altera_ventas(id_prod,id_autentic_vendedor,Momento_Exacto_Alter,User_Modifico) VALUES (OLD.id_prod,OLD.id_empl, NOW(),CURRENT_USER()); 3.- Ahora realicemos una alteracin: Cierto empleado (653) realizo la venta de un producto caducado(172) y tendr una sancin ya que antes de vender un producto se requiere ver la fecha de caducidad, para evitar la sancin le dice a un administrador de la base de datos que modifique el empleado de ese producto y que se lo asigne a otro(121). UPDATE ventas SET id_empl=121 WHERE id_prod=172;

SELECT *FROM ventas; Ventas

4. Observemos lo que realizo el trigger al momento de hacer el cambio del id_empl SELECT *FROM altera_ventas; Altera_ventas

Crear un TRIGGER llamado Produc_Eliminados sobre la tabla Productos el cual registre en la tabla Produc_Eliminados el id_prod, id_lab, Produc_Eliminado, Presentacion, Tipo, Momento_Exacto_Elim de todos los productos que sean eliminados.

1.- Creamos la tabla donde se almacenaran los datos anteriormente descritos.

CREATE TABLE Produc_Eliminados (No int not null auto_increment, id_prod Integer(3), id_lab Integer(3), Prod_Eliminado VarChar(50), Presentacion VarChar(50), Tipo char(1), Momento_Exacto_Elm datetime, primary key(No))ENGINE = InnoDB; 2.- Crear el trigger llamado Produc_Eliminados

CREATE TRIGGER produc_elim AFTER DELETE ON Productos FOR EACH ROW INSERT INTO Produc_Eliminados(id_prod,id_lab,Prod_Eliminado,Presentacion,Tipo,Momento_Exacto_Elm) VALUES (OLD.id_prod,OLD.id_lab,OLD.Nombre,OLD.Presentacion,OLD.tipo,NOW());

3. Crear un usuario por el root llamado Edgar cuyo password se igual a ivan, posteriormente asignarle los privilegios para poder consultar todas las tablas menos

Altera_ventas y Produc_Eliminados. Asigne el privilegio DELETE a Edgar sobre la tabla Productos. User root

4.- Elimine dos registros de la tabla Productos con el usuario Edgar, posteriormente visualice el contenido de la tabla Produc_Eliminados con el usuario root. User Edgar

User root // Observemos lo que realizo el trigger al momento de eliminar los registros

5.- Intente insertar los productos que fueron eliminados con el usuario Edgar. User Edgar

//El usuario Edgar no podr volver a insertar los registros que elimino puesto no tiene el Privilegio para hacerlo. y Crear un TRIGGER llamado New_Laborat el cual registre en la tabla Nuevos_Laboratorios el id_lab, Nombre , Direccion y la Fecha en que fue dado de Alta los nuevos laboratorios insertados.

1.- Crearemos la tabla Nuevos_Laboratorios CREATE TABLE Nuevos_Laboratorios (No int not null auto_increment, id_lab Integer(3), Nombre VarChar(50), Direccion VarChar(50), Fecha_Alta datetime, primary key(No))ENGINE = InnoDB; 2.- Crear el TRIGGER New_Laborat CREATE TRIGGER New_Laborat AFTER INSERT ON Laboratorios FOR EACH ROW INSERT INTO Nuevos_Laboratorios(id_lab,Nombre,Direccion,Fecha_Alta) VALUES (NEW.id_lab,NEW.Nombre,NEW.Direccion,NOW()); 3.- Asignar al usuario Edgar el privilegio INSERT en la tabla Laboratorios, posteriormente inserte nuevos laboratorio con el usuario Edgar User root

User Edgar

4.- Realizar una consulta con el usuario root De los nuevos laboratorios que han sido dados de alta. // Veamos lo que realizo el trigger al momento de insertar un nuevo laboratorio. User root

DROP TRIGGER Elimina un disparador. El nombre de esquema es opcional. Si el esquema se omite, el disparador se elimina en el esquema actual.

Eliminar todos los TRIGGERS creados anteriormente

DROP TRIGGER alteraciones_venta; DROP TRIGGER produc_elim; DROP TRIGGER new_laborat;

También podría gustarte