Escolar Documentos
Profissional Documentos
Cultura Documentos
Slide - Triggers PDF
Slide - Triggers PDF
Triggers
Evento
Uma Trigger especifica:
Os eventos que o disparam
As ações que serão executadas
Triggers
2
Trigger: Exemplo
Controle de estoque:
sempre que um produto é vendido é preciso dar baixa
automaticamente no estoque
Venda Estoque
cliente produto qtd produto descricao qtd
2012001 002 4 001 Guarda-roupa 50
2011035 001 1 002 Cadeira 80
2009024 003 2 003 Mesa 40
Quando é realizada uma venda, o que acontece?
INSERT INTO Venda VALUES (2013003, 001, 2)
É preciso reduzir a quantidade do produto no estoque!
O INSERT não faz isso!
Triggers
3
Solução 1
Atualizar o estoque via aplicação
INSERT INTO VENDA VALUES (2013003, 001, 2);
UPDATE Estoque
SET qtd = qtd – 2
WHERE produto = 001;
Funciona?
mas tem problemas...
Ação
Elimina os problemas
A aplicação executa somente o INSERT
INSERT INTO VENDA VALUES (2013003, 001, 2);
Triggers
5
Triggers – Sintaxe
Triggers
6
Triggers – Exemplo Criando o Gatilho
Triggers
7
Triggers – Exemplo Ativando o Gatilho
Triggers
8
NEW e OLD
NEW
Só vale para triggers de INSERT e UPDATE
INSERT: indica o registro que está sendo inserido
UPDATE: indica o registro que contém os valores
novos das colunas
OLD
Só vale para triggers de DELETE e UPDATE
DELETE: indica o registro que está sendo removido
UPDATE: indica o registro que contém os valores
velhos das colunas
Triggers
9
BEFORE e AFTER
Triggers podem ser disparadas antes ou
depois da execução da operação (BEFORE
ou AFTER)
Triggers
10
BEFORE e AFTER
BEFORE
Os dados em questão ainda não estão na tabela, mas já são
conhecidos – já se sabe qual o valor de cada coluna
As regras de integridade ainda não foram verificadas
São usadas para (por exemplo)
Setar valores para algumas colunas do registro que está sendo inserido
Guardar os valores que serão atualizados/removidos em uma tabela de
histórico
AFTER
Os dados em questão já estão na tabela, portanto não podem ser
modificados
As regras de integridade já foram verificadas
São usadas para (por exemplo)
Garantir que as ações da trigger serão executadas somente depois que
todas regras de integridade tenham sido verificadas
Triggers
11
ANSI-standard trigger
to enforce a business rule
https://dev.mysql.com/doc/refman/5.7/en/show-triggers.html
Triggers
13
Leitura Recomendada
Seção 24.1 do Capítulo 24:
ELMASRI, R; NAVATHE, S. B. Sistemas de Banco de Dados.
4ª ed. São Paulo: Pearson, 2005.
Capítulo 11:
TONSIG, L. S. MySQL: Aprendendo na Prática. Rio de Janeiro:
Ciência Moderna, 2006.
Capítulo 9:
MANZANO, J. A. N. G. MySQL 5.5 Interativo: Guia Essencial de
Orientação e Desenvolvimento. São Paulo: Érica, 2011.
Triggers
14