disparo de trigger

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
  

Mensagemem Seg, 08 Ago 2005 3:22 pm

Minha dúvida é a seguinte: uma trigger será disparada somente após o commit de uma ação, ou seja, quando ocorrer rollback a trigger não é acionada??

Alguém poderia me explicar este caso?!? Valeu! :wink:
edu4rdo
Localização: Tijucas/SC

Mensagemem Seg, 08 Ago 2005 4:13 pm

Não.
Se for trigger AFTER INSERT, UPDATE, DELETE ela é rodada DEPOIS do INSERT, UPDATE ou DELETE. (pra cada linha, individualmente!)

Se for trigger BEFORE, roda antes.

Exemplo:
TRIGGER AFTER UPDATE: Pra cada linha que é feito update, a trigger é disparada -> logo após a alteração de cada linha. Não é só no commit.
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Seg, 08 Ago 2005 4:19 pm

dr_gori, obrigado pelo interesse na minha questão.

Aproveitando, gostaria de saber mais nos casos de rollback.
Tenho como efetuar uma ação prevista numa trigger somente nos casos de commit, ou seja, ignorando os casos quando forem rollback?

Obrigado!
edu4rdo
Localização: Tijucas/SC

Mensagemem Seg, 08 Ago 2005 4:52 pm

É possível com AUTONOMOUS_TRANSACTION (dá uma pesquisada no forum)
Ou seja, a trigger roda em OUTRA sessão. Se você fizer rollback, não fará diferença nenhuma na outra sessão.

Mas cuidado, esse tipo de coisa deve ser BEM pensado e principalmente BEM TESTADO. Lembre-se que, nesse caso, você não pode inserir linhas em uma tabela FILHA, pois quando você der ROLLBACK dará problema. (você estará fazendo rollback só da tabela pai e não da filha, saca?)

O que você quer fazer com isso? Algum tipo de LOG?
Explique o que você quer fazer que o povo aqui costuma dar uma dica!
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Ter, 09 Ago 2005 10:36 am

O meu caso é de sincronização entre o Oracle e o Active Directory. Quando um cadastro for alterado/inserido no banco de dados, quero que o AD também seja alterado.
Porém só quero disparar o meu WebService (responsável pela sincronização) quando for efetivado o commit.
E aí que mora minha dúvida. Quando saber que foi realmente feito o commit através de trigger ??
edu4rdo
Localização: Tijucas/SC



Voltar para PL/SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 8 visitantes