Triggers
alter TRIGGER trg_ins ON vendaproduto AFTER insert
AS
BEGIN print 'Foi efetuada uma venda!!' declare @qtd int declare @id int select @qtd=qtd, @id=id_produto from inserted update produto set qtdstock= qtdstock - @qtd where @id=id_produto
END
GO
Trigger para DELETE
CREATE TRIGGER trg_del ON vendaproduto AFTER DELETE
AS
BEGIN print 'Foi eliminada uma venda!!!' declare @qtd int declare @idproduto int select @qtd=qtd, @idproduto=id_produto from deleted update produto set qtdstock = qtdstock + @qtd where id_produto = @idproduto end go
Trigger para UPDATE
CREATE TRIGGER trg_update ON vendaproduto AFTER update
AS
BEGIN declare @qtd_eliminada int declare @qtd_alterada int declare @id int select @qtd_eliminada=qtd, @id=id_produto from deleted print 'Quantidade eliminada' + convert(nvarchar(50),@qtd_eliminada) select @qtd_alterada=qtd from inserted print 'Quantidade alterada ' + convert(nvarchar(50),@qtd_alterada) update produto set qtdstock = qtdstock + (@qtd_eliminada - @qtd_alterada) where id_produto = @id
END
Go
Trigger para INSTEAD OF INSERT (atulizar o insert)
CREATE TRIGGER [dbo].[trg_ins] ON [dbo].[vendaproduto] INSTEAD OF INSERT
AS
BEGIN declare @qtd int declare @id int declare @qtd_vender int select @id=id_produto, @qtd_vender=qtd from inserted select @qtd=qtdstock from produto where id_produto=@id if (@qtd_vender>@qtd) begin print 'out of stock' end else begin print 'Foi efetuada uma venda!!' insert into vendaproduto (id_produto, qtd, datahora) values (@id, @qtd_vender, GETDATE ()) update produto set qtdstock= qtdstock - @qtd where id_produto=@id END END
update vendaproduto set qtd=200, id_venda=7
delete from vendaproduto where id_venda = '6'
insert into vendaproduto values ('1', '2', GETDATE ())
create table produtos (