Está en la página 1de 4

PROYECTO EJEMPLO DE TRIGGERS

ALUMNO: OMAR REYES HERNANDEZ


SEDE: LA ESPERANZA INTIBUCA

Base de datos inventario

create table productos


(
id_Cod int identity primary key,
cod_prod varchar(4) not null,
nombre varchar(50)not null,
existencia int not null,
)

Create table historial


(fecha date,
descripcion varchar(100),
usuario varchar(20))

create table ventas


(cod_prod varchar(4),
precio money,
cantidad int
)

insert into productos values('A001','MEMORIA USB 32GB',175);


insert into productos values('A002','DISCO DURO 2TB',15);
insert into productos values('A003','AIRE COMPRIMIDO',250);
insert into productos values('A004','ESPUMA LIMPIADORA',300);
insert into productos values('A005','FUNDA MONITOR',500);
insert into productos values('A006','FUNDA TECLADO',700);
insert into productos values('A007','SILLA ERGONMICA',11);
insert into productos values('A008','ALFOMBRILLA PARA SILLA',25);
insert into productos values('A009','LMPARA ESCRITORIO',7);
insert into productos values('A010','MONITOR LED 18 PULGADAS',45);
insert into productos values('A011','LIBRERO',20);
TRIGGERS

alter trigger TR_ProductoInsertado


on productos for insert
as
set nocount on
declare @cod_prod varchar(4)
select @cod_prod = cod_prod from inserted
insert into historial values(getdate(), @cod_prod, 'registro insertado', system_user)

create trigger TR_ProductoEliminado


on productos for delete
as
set nocount on
declare @cod_prod varchar(4)
select @cod_prod = cod_prod from deleted
insert into historial values(getdate(), @cod_prod, 'registro eliminado', system_user)

ejemplo al borrar: delete from productos where cod_prod = 'A003'

create trigger TR_ProductoActualizado


on productos for update
as
set nocount on
declare @cod_prod varchar(4)
select @cod_prod = cod_prod from inserted
insert into historial values(getdate(), @cod_prod, 'registro actualizado', system_user)

EJEMPLO AL ACTUALIZAR

update productos set existencia =180 where cod_prod = 'A001'

select * from ventas


select * from productos
create trigger TR_Ventas
on ventas for insert
AS
update productos set productos.existencia = productos.existencia - inserted.cantidad
from inserted inner join productos
on productos.cod_prod = inserted.cod_prod

ejemplo al insertar venta a la tabla

insert into ventas values('A001', 30, 2)

BASE DE DATOS PRUEBA

CREATE TRIGGER Elimina_auditoria_clientes AFTER DELETE ON clientes FOR EACH ROW


INSERT INTO auditoria_clientes(nombre_anterior, seccion_anterior, usuario, modificado,
Id_Cliente) VALUES (OLD.nombre, OLD.seccion, CURRENT_USERV, NOWO, OLD.id_cliente):
INSERT INTO clientes (nombre, seccion) VALUES ('Miguel','informatica'), ('Rosa','comida'),
('Maria','ropa'), CAlbere,'informatica'), (Jordi',.comida.);

Tabla: clientes
CREATE TABLE clientes( id_cliente int not null auto_increment, nombre varchar(I 00), seccion
varchar(20), Accion varchar(10) default 'Insertado', PRIMARY KEY(id_cliente), KEY(nombre) )
ENGINE = InnoDB;
Tabla: Auditoria_clientes
CREATE TABLE auditoria_clientes
11,"1:3:_tareiaourTiIraernnOt)', seccion_anterior varchar(20), nombre_nuevo varchar(100),
seccion_nueva varchar(20), usuario varchar(40), modificado datetime, proceso varchar(1 O),
Id_Cliente int(4), primary key(id) ) ENGINE = InnoDB;

Trigger para Insertar


CREATE TRIGGER Inserta_auditoria_clientes AFTER INSERT ON clientes FOR EACH ROW INSERT
INTO auditoria_clientes(nombre_nuevo, seccion_nueva, usuario, modificado, proceso,
Id_Cliente) VALUES (NEW.nombre, NEW.seccion, CURRENT_USERV, NOWO, NEW.Accion,
NEW.id_cliente );
Trigger: para modificar CREATE TRIGGER Modifica_auditoria_clientes BEFORE UPDATE ON
clientes FOR EACH ROW INSERT INTO auditoria_clientes(nombre_anterior, seccionnterior,
nombre_nuevo, seccion_nueva, usuario, modificado, Id_Cliente) VALUES (OLD.nombre,
OLD.seccion, NEW.nombre, NEW.seccion, CURRENT_USER(), NOW(), NEW.id_cliente):

Tabla: clientes
CREATE TABLE clientes( id_cliente int not null auto_increment, nombre varchar(1 00), seccion
varchar(20), Accion varchar(10) default 'Insertado', PRIMARY KEY(id_cliente), KEY(nombre) )
ENGINE = InnoDB;
Tabla: Auditoria_clientes

CREATE TABLE auditoria_clientes


Indo inn-1 rriZta rt3t 'te iaourTlIer InnOt)', seccion_anterior varchar(20), nombre_nuevo
varchar(100), seccion_nueva varchar(20), usuario varchar(40), modificado datetime, proceso
varchar(1 O), Id_Cliente int(4), primary key(id) ) ENGINE = InnoDB;