Dada esta sequência de comandos SQL no MySQL:
|
CREATE TABLE Produto
(
id int PRIMARY KEY,
Descricao VARCHAR(50) UNIQUE,
Estoque int NOT NULL DEFAULT 0
);
|
|
INSERT INTO Produto VALUES (1, 'parafuso', 100);
INSERT INTO Produto VALUES (2, 'bucha', 50);
INSERT INTO Produto VALUES (3, 'prego', 150);
|
|
CREATE TABLE ItensVenda
(
idVenda INT,
idProduto int,
Quantidade INT
);
|
|
DELIMITER $
CREATE TRIGGER Tgr_ItensVenda_Insert AFTER INSERT
ON ItensVenda
FOR EACH ROW
BEGIN
UPDATE Produto SET Estoque = Estoque - NEW.Quantidade
WHERE id = NEW.idProduto;
END$
CREATE TRIGGER Tgr_ItensVenda_Delete AFTER DELETE
ON ItensVenda
FOR EACH ROW
BEGIN
UPDATE Produtos SET Estoque = Estoque + OLD.Quantidade
WHERE id = OLD.idProduto;
END$
DELIMITER ;
|
|
INSERT INTO ItensVenda VALUES (1, 1,30);
INSERT INTO ItensVenda VALUES (1, 2,10);
INSERT INTO ItensVenda VALUES (1, 3,50);
|
|
DELETE FROM ItensVenda WHERE idVenda = 1 AND idProduto = 1;
|
Após ser feita a consulta (select * from Produto), os dados da tabela Produto serão