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!
disparo de trigger
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
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.
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.
-
- Rank: Estagiário Pleno
- Mensagens: 3
- Registrado em: Seg, 08 Ago 2005 3:20 pm
- Localização: Tijucas/SC
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!
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!
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
É possível com
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!
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!
-
- Rank: Estagiário Pleno
- Mensagens: 3
- Registrado em: Seg, 08 Ago 2005 3:20 pm
- Localização: Tijucas/SC
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 ??
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 ??
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 14 visitantes