ti-enxame.com

diferença antes e depois do gatilho no oracle

Alguém pode explicar a diferença entre o gatilho "antes" e "depois" no Oracle 10g com um exemplo?

15
Jagan

Primeiro, começarei minha resposta definindo trigger: a trigger é um procedimento armazenado que é executado quando uma linha é adicionada, modificada ou excluída.

Os gatilhos podem executar [~ # ~] antes de [~ # ~] a ação é tomada ou [~ # ~ ] depois de [~ # ~] a ação é executada.

BEFORE gatilhos geralmente são usados ​​quando a validação precisa ocorrer antes de aceitar a alteração. Eles são executados antes que qualquer alteração seja feita no banco de dados. Digamos que você execute um banco de dados para um banco. Você tem uma tabela accounts e uma tabela transactions. Se um usuário fizer um saque de sua conta, você deverá garantir que o usuário tenha créditos suficientes em sua conta para o saque. O gatilho BEFORE permitirá fazer isso e evitar que a linha seja inserida em transactions se o saldo em accounts não for suficiente.

AFTER gatilhos geralmente são usados ​​quando as informações precisam ser atualizadas em uma tabela separada devido a uma alteração. Eles são executados após as alterações no banco de dados (não necessariamente confirmadas). Vamos voltar ao nosso exemplo anterior. Após uma transação bem-sucedida, você deseja que balance seja atualizado na tabela accounts. Um gatilho AFTER permitirá que você faça exatamente isso.

30
Andrew Moore

Não tenho muita certeza do que você está interessado em saber, por isso vou manter isso fundamental.

Antes dos gatilhos

  • Conforme o nome, esses gatilhos são disparados antes da criação da linha na tabela. Posteriormente, como a linha ainda não foi criada, você terá acesso total ao campo: new.table_element. Isso permite a limpeza e uniformidade dos dados se dados indesejados/malformados estiverem tentando ser inseridos/atualizados. Este é apenas um exemplo básico, mas você precisa utilizar o gatilho antes a qualquer momento que precisar de acesso aos dados ": new".

Depois dos gatilhos

  • Como o gatilho posterior é acionado depois que a linha já foi criada, esses gatilhos geralmente são utilizados quando você deseja que a lógica ocorra devido à linha. Por exemplo, se você possui uma tabela de endereços e um usuário atualiza seu endereço, convém atualizar os IDs de referência de endereço em uma tabela xref após a criação (se você também mantiver todos os endereços antigos). Além disso, ao contrário do gatilho anterior, você não tem acesso para modificar nenhum dos valores da coluna, pois a linha já existe na tabela.
7
imbroglio

ANTES DO TRIGGER são usadas quando a ação do acionador deve determinar se as instruções de acionamento devem ou não ser concluídas. Ao usar o usuário ANTES do TRIGGERS, o usuário pode eliminar o processamento desnecessário da instrução de acionamento, mas AFTER TRIGGERS é usado quando as instruções de acionamento devem ser concluídas antes de executar o comando. acionar ação.

1
srimanta sahoo