Escolar Documentos
Profissional Documentos
Cultura Documentos
Gatilhos
(Triggers)
“Se você tem uma maçã e eu tenho outra; e nós trocamos as maçãs,
Profº: Joseph Donald então cada um terá sua maçã. Mas se você tem uma ideia e eu tenho
outra, e nós as trocamos; então cada um terá duas ideias.”
Contatos:
joseph.vieira@facape.br
George Bernard Shaw
Banco de Dados II
Profº: Joseph Donald
Gatilhos (Triggers)
• É um rotina SQL associada a uma tabela
OLD
• Usado para valores anteriores ou atuais em uma linha que está sendo atualizada
ou excluída na tabela que provoca o disparo do gatilho.
• Não é usado para INSERT
• Sintaxe:
✓ OLD.<nome da coluna>
✓ Exemplo: OLD.valor
NEW
• Conjunto novo de valores de uma linha que está sendo inserida ou atualizada.
• Não é usada para DELETE
• Sintaxe:
✓ NEW.coluna
✓ Exemplo: NEW.salario
Banco de Dados II
Gatilhos (Triggers) Profº: Joseph Donald
✓ Realizar atualizações
✓ Forçar restrições de dados
✓ Converter automaticamente dados
✓ Notificar alterações no banco de dados para as aplicações clientes
✓ Executar atualizações de integridade referencial em cascata
Banco de Dados II
Criação dos Gatilhos (Triggers) Profº: Joseph Donald
SINTAXE:
EXEMPLO 1:
Crie um gatilho que coloque todos os nomes inseridos na tabela
vendedor em maiúsculo e depois insira um novo vendedor usando letras
minúsculas para verificar o funcionamento do TRIGGER.
EXEMPLO 2:
Crie um gatilho que calcula o INSS de acordo com o salário cadastrado.
EXEMPLO 3:
Crie uma tabela chamada “PEDIDOS_CANCELADOS” com os campos (id_ped_canc,
num_pedido, valor_pedido, data_horario)
Depois crie um TRIGGER que registre qualquer pedido deletado na tabela PEDIDO para a
tabela PEDIDOS_CANCELADOS.
DELIMITER //
CREATE TRIGGER tr_del_pedido AFTER DELETE
ON pedido
FOR EACH ROW
BEGIN
INSERT INTO pedidos_cancelados (num_pedido, valor_pedido, data_horario)
VALUES (OLD.id_pedido, OLD.valor, CURRENT_TIMESTAMP);
END //
Banco de Dados II
Exclusão dos Gatilhos (Triggers) Profº: Joseph Donald
SINTAXE:
DROP TRIGGER <nome da trigger>
VAMOS PRATICAR!!
• Crie um gatilho que recalcula o INSS após uma alteração do salário dos
vendedores.
• Crie um gatilho que calcula a idade dos vendedores de acordo com a
data de nascimento cadastrada.
• Crie um gatilho que calcula a idade dos vendedores após a atualização
da data de nascimento.