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 acionador tem 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 trigger 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 omitida. 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 disabled, o triggering_event não faz com que o banco de dados execute a trigger_action, mesmo que a trigger_restriction seja TRUE ou omitida.

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 do Oracle Database PL/SQL.

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 Oracle Database 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 trigger é executado toda vez que um cliente adiciona dados à tabela, nenhum cliente poderá ignorar as regras, e o código que força as regras pode ser armazenado e mantido somente no trigger, e não em todas as aplicações cientes. Para outros usos dos triggers, consulte Referência de Linguagem PL/SQL do Oracle Database.

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