Está en la página 1de 2

CREATE TABLE producto

(
idproducto CHAR(8) NOT NULL,
nombreproducto VARCHAR(25),
existencia INT NOT NULL,
precio DECIMAL(10,2) NOT NULL,
precioventa DECIMAL(10,2) NOT NULL,
constraint pk_idproducto primary key(idproducto)
)
CREATE TABLE pedidos
(
idpedido INT IDENTITY,
idproducto CHAR(8) NOT NULL,
cantidad_pedido INT,
constraint fk_idbod foreign key (idproducto)references
producto(idproducto)
)
INSERT INTO producto VALUES ('prod001','filtros pantalla',5,10,12.5)
INSERT INTO producto VALUES ('prod002','parlantes',7,10,11.5)
INSERT INTO producto VALUES ('prod003','mouse',8,4.5,6)
INSERT INTO producto VALUES ('prod004','monitor',10,60.2,80.0)
INSERT INTO producto VALUES ('prod005','lapiz',5,1.2,2.0)

select *from producto

create trigger tr_insertar_producto on producto


after insert
as
if update (idproducto)
begin
print 'se ha actualizado la tabla producto'
end

select*from producto

create trigger tr_insertar_pedidos on pedidos


after insert
as
if update (idpedido)
begin
print 'se ha actualizado la tabla pedidos'
end

insert into pedidos values ('prod002',20)

select*from pedidos

---- crear un trigger para la tabla producto, que se


----active cada vez que se inserte un registro o se actualice
---la columna precio la condicion para aceptar la insercion o la actualizacion

select *from producto


select *from pedidos

create trigger tr_insefrtar_actualizar on producto after insert,update


as
declare @precio decimal(10,2),@precioventa decimal(10,2);
select @precio=precio,@precioventa=@precioventa from producto where
(precio>precioventa)
if @precio>=@precioventa
begin
rollback transaction
print'error el precio es mayor que el precio de venta'
end
begin
commit tran
print'se ha ingresado con exito'
end

update producto set precio = 5 where idproducto = 'prod003'

--- si deseamos que lo datos se inserten digitamos commit tran, pero si


anteriormente
-----
create trigger tr_eliminar on persona for drop_table
as
begin
raiserror ('no se permite eliminar tabla',16,1)
rollback transaction
end

--- pregunta 3

-- Crear un Trigger para la tabla pedidos que cada


---vez que se realice un pedido descuente la existencia
---de la tabla productos, en caso que la cantidad del pedido
--supere a la existencia debe deshacer la transacción y mostrar
--un mensaje de error.

select * from producto


select * from pedidos

Create trigger Quitar_Existencia


on pedidos
after insert
as
Update P Set p.existencia=p.existencia-i.cantidad_pedido
from inserted as i inner join producto as P on
i.idproducto=p.idproducto

insert into pedidos values ('prod003',3)

https://www.youtube.com/watch?v=2FiUK8NWuXs

También podría gustarte