PL SQL
O que é uma trigger?
Uma trigger é um bloco PL/SQL que é associado a um evento específico (insert, update ou delete), armazenado em um banco de dados e executado sempre que o evento ocorrer.
Uma trigger é disparada quando uma linha na tabela correspondente é:
Inserida: no evento inserting da tabela;
Atualizada: no evendo updating da tabela;
Excluída: no evento deleting da tabela.
Não é possível definir uma trigger para ser disparada quando uma linha é selecionada.
Uma trigger é um objeto de banco de dados, assim como uma tabela ou um índice.
Quando você define uma trigger, ela se torna parte do banco de dados e é sempre executada quando o evento para o qual ela é definida ocorre.
Por causa disso, uma trigger permite que você execute validação crítica ou cálculos em resposta às alterações feitas no banco de dados, seja qual for a fonte.
Um exemplo de trigger:
Suponhamos que você queira ter certeza de que todos os nomes de departamentos foram armazenados usando letras maiúsculas. Talvez você esteja fazendo isso para facilitar a pesquisa naquele campo.
1 create or replace trigger TRG_DEPARTAMENTO
2 before INSERT or UPDATE on DEPARTAMENTO for each row
3 begin
4 -- O comando UPPER força os caracteres em minúsculo para maiúsculo
5 :new.DESCRICAO := UPPER(:new.DESCRICAO);
6 end;
7 /
A linha 1 diz ao Oracle para criar essa trigger com o nome TRG_DEPARTAMENTO para substituir, se preciso, toda trigger existente de mesmo nome.
A linha 2 diz que ela será sempre disparada antes que uma linha nova for inserida na tabela de departamentos ou sempre que um registro de departamento mudar.
Existe a possibilidade que seja sempre disparada depois, basta substituir a palavra BEFORE por AFTER.
A referência a : NEW é o alias padrão para o novo valor do registro.
O alias :OLD pode ser usado para se referir ao valor antigo de um campo antes que aconteça uma atualização.
A linha 2 ainda, diz ao Oracle para