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:
-
Instrução DML (descrita em "Sobre Instruções de DML (Data Manipulation Language)")
-
Instrução DDL (descrita em "Sobre Instruções de DDL (Data Definition Language)")
-
Operação do banco de dados (SERVERERROR, LOGON, LOGOFF, STARTUP ou SHUTDOWN)
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:
-
Antes das execuções do evento de acionamento (nível de instrução ANTES do acionamento)
-
Após as execuções do evento de acionamento (trigger AFTER no nível da instrução)
-
Antes de cada linha que o evento afeta (trigger de nível de linha ANTES)
-
Após cada linha que o evento afeta (trigger de nível de linha APÓS)
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