Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diego Bx

Disparo da Trigger após o Commit

Recommended Posts

Boa tarde Galera !

 

Preciso de um help na seguinte situação:

 

Tenho um sistema que não tenho acesso ao codigo fonte, tenho uma trigger amarrada na tabela Visitante onde tenho que alimentar uma terceira tabela com informações da tabela Pai (visista) e visitante. Só que no software o commit está no final de todas as operações ou seja não tem como eu buscar as informações da tabela visista para inserir nessa terceira tabela.

Queria saber se teria como disparar a trigger após o commit ou senão acessar os dados em buffer para pegar as infomações da tabela visita já que a trigger está na tabela filho na visitante.

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tabela dependente atualiza a tabela mãe ?

Dá um exemplo.

 

Estaria tudo na mesma session logo em tese os dados poderiam ser lidos, o commit só vai encerrar o processo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os dados são inseridos na tabela Pai (Visita) e depois na filha (Visitante), se ocorreu tudo bem faz o commit para as duas tabelas esse é o processo do software.

Porém quando faz o insert na tabela filha a trigguer é ativada, só que preciso pegar uma informação da tabela visita alimentando uma variável, só que por não ter dado commit inicialmente na tabela Pai o mesmo não se encontra na tabela física assim não encontrando as informações para a continuidade da regra de negocio da trigger.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sendo a mesma session deveria ler , é uma trigger de statemnet ou de each row , after ou before ?

 

Se tivesse tempo faria um teste aqui mas creio que na mesma session a leitura é possível.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diego Bx, em tese deveria funcionar , ainda que um acoplamento perigoso.

 

Não tenho tempo de fazer um teste aqui mas tenho quase certeza que funcionaria.

 

Que dado da tabela principal precisa ser atualizado ? Como isto funciona ?

 

Não tem chance do fornecedor alterar a aplicação ?

 

--

Uma outra saída poderia ser uma Procedure que rode a faça esta gravação posterior ao post, poderia rodar via job/scheduler de x em x minutos.

 

--

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia !

 

Por questão que não tenho acesso ao código fonte do software, decidi melhor mudar a regra da trigger amarrando ela em outra tabela que não vai interferir em nada no processo.

 

Mas a regra anterior era assim, para inserir um dado nessa terceira tabela eu tinha que pegar um codigo que estava na tabela Visita(pai), a trigger estava amarrada na tabela Visitante (filho) só que na tabela filho não tinha esse codigo porque não são relacionadas por esse codigo então tinha que fazer uma busca pegando o FK da filho para buscar na pai. Só que como o software so commita no final no momento de fazer essa busca não acho na tabela pai com o ID que estou inserindo.

 

A minha duvida é como eu poderia acessar esse dado em buffer já que o mesmo nao foi commitado na tabela.

 

obrigado pelo apoio !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto seria verdade se fosse outra session do Oracle pois o Oracle não permite esta "dirty read" (algo não commitado) , mas na mesma session (triggers incluso) seria possível ler o dado.

 

Não tenho tempo de testar aqui mas tenho quase certeza que funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.