Rogério, antes de mais nada tenho que comentar que essa modelagem não me parece estar lá muito correta : SE há relacionamento de pai e filho (ie, a informação B tem Dependência de uma outra informação A), logicamente isso *** DEVERIA *** ter sido modelado como PK e FK, foi Exatamente para Isso que se inventou as constraints no banco de dados..... Modelar tudo numa só tabela Necessariamente significa jogar PELA JANELA o código todo, os recursos TODOS nativos do banco de dados referentes à integridade e vc Necessariamente terá que escrever e escrever código e mais código, que portanto TERÁ que ser mantido depois...
Bom, isso posto : quando vc apela pra "constraints" via trigger (com aspas TOTAIS aí nessas "constraints", o que vc teria aí é um quebra-galho Trabalhoso e escrito por vc) , vc TEM QUE levar em conta um item muito importante : o seu banco NÃO é mono-usuário, imagino, então NADA impede que uma sessão A não enxergue os dados que uma sessão B está inserindo/alterando ao mesmo tempo, e portanto o SELECT retorne zero pra A, aí vem o COMMIT, e vc ficar com um registro órfao ... Idem pra performance, vai ficar Absolutamente, Totalmente por sua conta qqer coisa nesse sentido, E ao mesmo tempo vc deixa de usar o código compilado, dentro do banco, e o vai substituir por código INTERPRETADO, como é o PL/SQL, sabe-se lá que tipo de resultado vc vai obter : pode até ser aceitável pra vc, mas eu não poria a mão no fogo... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Eduardo Souza <pjabrantes@...> escreveu > > Em 12 de maio de 2011 15:24, Lo Bello <rogerioblb@...> escreveu: > > > O que eu posso te dizer é que uma procedure com Pragma > > Autonomous_Transaction pode executar insert com commit independente de uma > > outra procedure que a tenha chamado. Aqui na minha instalação utilizamos > > isso para gravação em tabela de 'LOGS' onde podemos acompanhar o andamento > > da execução do processo antes que este tenha acabado. > > > > Pessoal, > > > > Tenho uma tabela com os campos CONTA e CONTA_MAE, o campo CONTA_MAE se > > refere a outras linhas da mesma tabela. > > > > O problema é que tenho uma trigger que ao deletar um registro no ON DELETE > > verifica se existe alguma conta com o campo CONTA_MAE mencionando esse > > registro deletado, mas a trigger dá mutante. > > > > Achei uma solução usando "Pragma Autonomous_Transaction", mas li em alguns > > lugares que esse comando pode te causar alguns problemas se usado de forma > > incorreta. > > > > alguém sabe me dizer se existe alguma problema em uso-la assim: > > > > CREATE OR REPLACE TRIGGER TBCONTA_TR > > BEFORE DELETE ON TBCONTA > > FOR EACH ROW > > DECLARE > > V_CONT NUMBER; > > Pragma Autonomous_Transaction; > > BEGIN > > SELECT COUNT(*) INTO V_CONT FROM TBCONTA WHERE CONTA_MAE = :OLD.CONTA; > > IF V_CONT <> 0 THEN > > RAISE_APPLICATION_ERROR( -20151,'Esta conta tem contas abaixo dela, > > delete-as primeiro!'); > > END IF; > > END; > > > > Rogério > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] >