Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE DATABASE IF NOT EXISTS trigger_exemplo;
- USE trigger_exemplo;
- CREATE TABLE IF NOT EXISTS produtos
- (
- idProduto INT UNSIGNED NOT NULL AUTO_INCREMENT,
- nome VARCHAR (50),
- preco FLOAT,
- qtd SMALLINT,
- PRIMARY KEY (idProduto)
- );
- CREATE TABLE IF NOT EXISTS itens
- (
- idCompra INT UNSIGNED,
- idProduto INT UNSIGNED,
- qtd INT,
- PRIMARY KEY (idCompra),
- FOREIGN KEY (idProduto) REFERENCES produtos (idProduto)
- );
- INSERT INTO
- produtos (nome, preco, qtd)
- VALUES
- ('Caneta', 1.00, 10),
- ('Lápis', 0.50, 50),
- ('Borracha', 0.20, 100);
- # --------------------------------
- # Exemplo 1
- # Um trigger para dar baixa em estoque
- DELIMITER //
- CREATE TRIGGER
- tg_diminuir_estoque
- AFTER INSERT ON
- itens
- FOR EACH ROW
- BEGIN
- UPDATE
- produtos
- SET
- qtd = qtd - NEW.qtd
- WHERE
- idProduto = NEW.idProduto;
- END;
- //
- DELIMITER ;
- # Testando
- SELECT * FROM produtos;
- INSERT INTO
- itens (idCompra, idProduto, qtd)
- VALUES
- (1, 1, 5);
- SELECT * FROM produtos;
- # --------------------------------
- # Exemplo 2
- # O comprador desistiu de comprar toda aquela quantidade do item.
- DELIMITER //
- CREATE TRIGGER
- tg_devolverTudo_estoque
- BEFORE DELETE ON
- itens
- FOR EACH ROW
- BEGIN
- UPDATE
- produtos
- SET
- qtd = qtd + OLD.qtd
- WHERE
- idProduto = OLD.idProduto;
- END;
- //
- DELIMITER ;
- # Testando
- SELECT * FROM produtos;
- DELETE FROM
- itens
- WHERE
- idProduto = 1 AND idCompra = 1;
- SELECT * FROM produtos;
- # --------------------------------
- # Exemplo 3
- # O Comprador devolve parcialmente itens.
- DELIMITER //
- CREATE TRIGGER
- tg_devolverParcial_estoque
- AFTER UPDATE ON
- itens
- FOR EACH ROW
- BEGIN
- UPDATE
- produtos
- SET
- qtd = qtd + (OLD.qtd - NEW.qtd)
- WHERE
- idProduto = OLD.idProduto;
- END;
- //
- DELIMITER ;
- # Testando
- INSERT INTO
- itens (idCompra, idProduto, qtd)
- VALUES
- (1, 1, 5);
- SELECT * FROM produtos;
- UPDATE
- itens
- SET
- qtd = 2
- WHERE
- idCompra = 1 AND idProduto = 1;
- SELECT * FROM produtos;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement