Você está na página 1de 14

Prof.

Glauco Luiz Rezende de Carvalho


glauco.carvalho@academico.ifs.edu.br
Ementa

 Entender os conceitos sobre Trigger.


Trigger
Trigger

 O comando CREATE TRIGGER cria um gatilho. Este fica associado à tabela


especificada e executa uma regra de negócio quando ocorrem
determinados eventos. O gatilho pode ser especificado para disparar antes
de tentar realizar a operação na linha (antes das restrições serem
verificadas e o comando INSERT, UPDATE ou DELETE ser tentado), ou após a
operação estar completa (após as restrições serem verificadas e o comando
INSERT, UPDATE ou DELETE ter completado).

 Se o gatilho for disparado antes do evento, o gatilho pode fazer com que a
operação não seja realizada para a linha corrente, ou pode modificar a linha
sendo inserida (para as operações de INSERT e UPDATE somente). Se o
gatilho for disparado após o evento, todas as mudanças, incluindo a última
inserção, atualização ou exclusão, estarão "visíveis" para o gatilho.
Trigger

 Um gatilho que está marcado FOR EACH ROW é chamado uma vez para
cada linha que a operação modifica. Por exemplo, um comando DELETE
afetando 10 linhas faz com que todos os gatilhos ON DELETE da relação de
destino sejam chamados 10 vezes, uma vez para cada linha excluída.

 Diferentemente, um gatilho que está marcado FOR EACH STATEMENT


somente executa uma vez para uma determinada operação, não
importando quantas linhas sejam modificadas; em particular, uma operação
que não modifica nenhuma linha ainda assim resulta na execução de todos
os gatilhos FOR EACH STATEMENT aplicáveis.
Trigger

 Se existirem vários gatilhos do mesmo tipo definidos para o mesmo evento,


estes serão disparados na ordem alfabética de seus nomes.

 Considerações Importantes:
 A Trigger não pode ser chamado diretamente;

 A Trigger faz parte de um bloco transacional;

 Obrigatório associar uma trigger a uma table;

 Quando a tabela é excluída a trigger também é excluída;

 A Trigger depende exclusivamente dela e da tabela que esta associada.


Trigger
 Consultando a relação de triggers existentes em um banco de dados:
 Select * from Sys.Triggers

 Visualizando o código de um trigger existente:


 Use [seu banco]
Select Name, Definition
From Sys.SQL_Modules Inner
Join Sys.Triggers
On Sys.SQL_Modules.object_id = sys.triggers.object_id
Trigger

 Criando uma nova trigger:


USE Vendas_Online
GO;

CREATE TRIGGER Lembrete1


ON Vendas.Cliente
AFTER INSERT, UPDATE
AS RAISERROR (‘Notificar o Relacionamento com o Cliente!’, 16, 10)
GO;
Trigger

 Alterando uma nova trigger:


USE Vendas_Online
GO;

ALTER TRIGGER Lembrete1


ON Vendas.Cliente
AFTER INSERT, UPDATE
AS RAISERROR (‘Notificar o Relacionamento com o Cliente!’, 16, 10)
GO;
Trigger

 Excluindo a Tabela e Removendo as Triggers existentes:


 Drop Table Vendas.Cliente;

 Excluindo somente a Trigger existente:


 Drop Trigger Lembrete1;
Nomenclatura de Trigger
Banco de Dados Caracter Inicial Tipo
Definido pelo Usuário TG ou UTG Local
Prática
Prática de Trigger

 Implementar uma Trigger que


realize uma auditoria dos salários
dos funcionários.

 A trigger será associada ao


comando de update, ou seja,
todas as vezes que alguém
realizar uma alteração salarial, a
trigger deverá identificar o salário
antigo, o novo, a data e hora, o
computador (ip ou nome) e quem
fez.

 Deverá ser salvo em uma tabela


chamada de AdmLog.
Obrigado.

Você também pode gostar