Sobre Triggers

Um trigger é uma unidade PL/SQL que é armazenada no banco de dados e (se estiver no estado ativado) executa automaticamente ("dispara") em resposta a um evento especificado.

Um trigger apresenta a seguinte estrutura:

TRIGGER trigger_name
  triggering_event
  [ trigger_restriction ]
BEGIN
  triggered_action;
END;

O trigger_name deve ser exclusivo para triggers no esquema. Um trigger pode ter o mesmo nome de outro tipo de objeto no esquema (por exemplo, uma tabela); no entanto, a Oracle recomenda o uso de uma convenção de nomenclatura que evite confusão.

Se o acionador estiver no estado ativado, o triggering_event fará com que o banco de dados execute a trigger_action se a trigger_restriction for TRUE ou omitido. O triggering_event está associado a uma tabela, uma view, um esquema ou ao banco de dados, e é um dos seguintes:

Se o trigger estiver no estado desativado, o triggering_event não executará o trigger_action do banco de dados, mesmo que o trigger_restriction seja VERDADEIRO ou omitido.

Por padrão, um trigger é criado no estado ativado. É possível desativar um trigger desativado e ativar um trigger desativado.

Ao contrário de um subprograma, um trigger não pode ser chamado diretamente. Um trigger é chamado somente por seu evento de trigger, que pode ser causado por qualquer usuário ou aplicação. Um trigger pode estar em execução sem que você esteja ciente, a menos que ele cause um erro que não seja tratado apropriadamente.

Um gatilho simples pode ser acionado exatamente em um desses pontos de cronometragem:

Um gatilho composto pode ser acionado em vários pontos de tempo. Para obter informações sobre acionadores compostos, consulte Referência de Linguagem PL/SQL do Oracle AI Database.

Um gatilho INSTEAD OF é definido em uma view e seu evento acionador é uma instrução DML. Em vez de executar a instrução DML, o banco de dados executa o trigger INSTEAD OF. Para obter mais informações, consulte "Criando um Acionador INSTEAD OF".

Um acionador do sistema é definido em um esquema ou no banco de dados. Um trigger definido em um esquema é acionado para cada evento associado ao proprietário do esquema (o usuário atual). Um trigger definido em um banco de dados é acionado para cada evento associado a todos os usuários.

Uma utilidade dos triggers é a aplicação de regras de negócios que se aplicam a todas as aplicações clientes. Por exemplo, suponha que dados adicionados à tabela EMPLOYEES devam ter um determinado formato e que muitos aplicativos cliente possam adicionar dados a essa tabela. Um trigger na tabela pode garantir o formato apropriado de todos os dados adicionados a ela. Como o gatilho é executado sempre que qualquer cliente adiciona dados à tabela, nenhum cliente pode contornar as regras, e o código que impõe as regras só pode ser armazenado e mantido no trigger, em vez de em todos os aplicativos clientes. Para outros usos dos triggers, consulte Referência de Linguagem PL/SQL do Oracle AI Database.

Consulte Também: Referência de Linguagem PL/SQL do Oracle AI Database para obter informações completas sobre triggers