Professional Documents
Culture Documents
Definio de Triggers
Uma Trigger (gatilho) possui muitas semelhanas com uma Stored Procedure. A diferena reside em sua execuo, que acontece diante de um evento iniciado por comandos Insert, Delete ou Update (comandos DML).
Muitas vezes as restries criadas no BD no so suficientes para manter a integridade dos dados. Talvez esta seja uma das principais utilidades da Trigger, porm ela pode ser usada para os mais diversos fins. Um exemplo seria o desenvolvimento de um mtodo prprio de auditoria.
Administrao e Projeto de Banco de Dados - Uniban Brasil - profmauriciofaria@gmail.com 2
Tipos de Triggers
O MYSQL 5 permite a criao de dois tipos de triggers: BEFORE (Insert, Delete, Update): As Triggers BEFORE so executadas antes da ao original que poder ser um insert, update ou delete; AFTER (Insert, Delete, Update): As Trigger After so executadas aps o evento original que poder ser um insert, update ou delete;
INSERT: o operador NEW.nome_coluna, nos permite verificar o valor enviado para ser inserido em uma coluna de uma tabela. OLD.nome_coluna no est disponvel. DELETE: o operador OLD.nome_coluna nos permite verificar o valor excludo ou a ser excludo. NEW.nome_coluna no est disponvel.
Administrao e Projeto de Banco de Dados - Uniban Brasil - profmauriciofaria@gmail.com 4
Sintaxe
DELIMITER// CREATE TRIGGER <nome da trigger> <tipo de trigger [before/after]> <evento mapeado [insert/update/delete]> ON <nome da tabela> FOR EACH ROW BEGIN <corpo da trigger>; END //
Administrao e Projeto de Banco de Dados - Uniban Brasil - profmauriciofaria@gmail.com 6
Fazemos o UPDATE da quantidade em estoque de acordo com o cdigo do produto e a quantidade inseridas na tabela de ITEMPEDIDO.
PRODUTOS CODIGOPRODUTO NOME QTDESTOQUE
1 2
DVD LIQUIDIFIC
100 30
7
//
Exemplo de Triggers
A Trigger a seguir simples, mas requer algumas explicaes.
Proposta: Suponha que o Diretor de uma empresa que utiliza um sistema desenvolvido por voc, e deseja saber quais usurios realizam alteraes nos preos das mercadorias.
preciso ainda saber quando e de onde (estao) esta alterao foi feita. Vamos utilizar como cenrio o Banco de Dados Northwind, e tabela a Products. Esta tabela possui um campo chamado UnitPrice, onde esta armazenado o preo atual do produto. Ento criaremos uma Trigger After update, que ser chamada de Auditaria. Vamos precisar ainda de uma tabela para armazenar a auditoria.
Administrao e Projeto de Banco de Dados - Uniban Brasil - profmauriciofaria@gmail.com 9
10
Note que os campos sero preenchidos no INSERT ocasionado pela execuo da TRIGGER;
11
Executando a trigger Para testar altere alguns preos de produtos e depois leia o contedo da tabela TAB_AUDIT Passo 1 UPDATE products SET unitprice = 12.5 productId = 100 Passo 2 SELECT * FROM TAB_AUDIT;
Administrao e Projeto de Banco de Dados - Uniban Brasil - profmauriciofaria@gmail.com 13