Você está na página 1de 14

Instituto Federal da Bahia – IFBA

Campus Vitória da Conquista

Triggers

Prof. Me. Pablo Freire Matos


pablofmatos@gmail.com
Triggers (Gatilho)
 Um gatilho especifica ações que serão
executadas automaticamente pelo SGBD na
ocorrência de determinados eventos
 Os eventos indicam modificações no banco de
dados (em alguma tabela)

Evento
 Uma Trigger especifica:
 Os eventos que o disparam
 As ações que serão executadas

quando for disparado Ação

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...

 É possível que algumas aplicações façam e outras não


 Se isso ocorrer, o BD vai perder informações e ficar
inconsistente
 Todas as aplicações precisam replicar a lógica
Triggers
4
Solução 2
 Atualizar o estoque via SGBD (Trigger) Evento

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

FEUERSTEIN, Steven; HARRISON, Guy. MySQL Stored Procedure


Programming. United States of America:
Triggers
O'Reilly, 2006.
12
Mostrar as Triggers Criadas

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

Você também pode gostar