TRIGGERS
Objetivos
Descrever o uso de database triggers;
Descrever os diferentes tipos de triggers;
Criar database triggers;
Descrever database trigger-firing rules;
Remover database triggers;
Visualizar informações de trigger.
O que são Triggers
Bloco PL/SQL armazenado no banco de dados e executado em
resposta a um evento;
A trigger é lançada automaticamente quando especificas
condições ocorrerem.
Criando um package padrão de
exceção
A trigger pode ser definida em tabela, view, esquema ou database.
Tipos de Trigger Event
Possibilita que triggers sejam disparadas sempre que uma das
seguintes ocorrências acontecerem:
Manipulação DML (DELETE, INSERT ou UPDATE);
Definição de banco de dados DDL (CREATE, ALTER ou
DROP)
Operações de banco de dados SERVERERROR, LOGON,
LOGOFF, STARTUP ou SHUTDOWN.
Application e Database Triggers
Database trigger:
Lançada sempre que ocorrer uma DML, DDL ou evento de sistema
em qualquer esquema ou banco de dados.
Application trigger:
Lançada sempre que ocorrer um evento com uma aplicação
especifica.
Cenários para implementação de
Triggers
As triggers podem ser usadas para:
Segurança;
Auditoria;
Integridade de dados;
Integridade referencial;
Replicação de tabelas;
Computação de derivação de dados;
Eventos de logging.
Avaliação de tipos de Trigger
DML Triggers:
BEFORE;
AFTER;
INSTEAD OF.
Trigger composta;
Não-DML triggers;
Eventos DDL;
Eventos de banco de dados.
Tipos de eventos e corpo de
Trigger
O tipo de evento da trigger determina qual instrução DML
chama uma trigger. Os possíveis eventos são:
INSERT;
UPDATE [OF COLUMN];
DELETE.
No corpo, desenvolvimento, da trigger é determinado as suas
ações podendo também realizar chamada a procedures.
Criando uma DML Trigger usando a
expressão CREATE TRIGGER
Especificando Firing Triggers
(Timing)
A trigger timing ocorre sempre para executar uma ação da
trigger antes ou depois da expressão com uma timing trigger
implementada:
BEFORE: Executa a trigger antes do evento de DML sobre a
tabela;
AFTER: Executa a trigger depois do evento de DML sobre a
tabela;
INSTEAD OF: Executa a trigger para views que não são
modificadas.
Trigger em nível de expressão e
linhas
Trigger no nível de expressão Trigger no nível de linha
Default quando criando uma trigger. Usada com FOR EACH ROW quando
criada uma trigger.
Disparada para cada evento de trigger. Dispara da uma vez para cada linha
afetada.
Dispara uma vez, mesmo que Caso nenhuma linha seja afetada a
nenhuma linha é afetada. trigger não é disparada.
Criando Trigger para expressão DML
Recompilar Trigger:
ALTER TRIGGER novos_emp_depto COMPILE;
Excluir Trigger:
DROP TRIGGER novos_emp_depto;
Visualizando função a partir do
dicionário de dados
USER_OBJECTS: Informações do objeto, como data de criação e status.
SELECT *
FROM user_objects
WHERE object_type LIKE 'TRIGGER'
AND object_name LIKE UPPER('novos_emp_depto');