Então, o mutante dá quando eu dou um select na tabella quando update ou delete.
O Pragma funcionou pra mim, ele entende o OLD normalmente. O que eu queria saber se existe algum "problema" na forma que estou utilizando. Rogério Em 12 de maio de 2011 15:53, Fabio Martinez <mtzfa...@gmail.com> escreveu: > O erro de trigger mutante é devido a vc estar fazendo select na mesma > tabela > da trigger. > > O Pragma Autonomous_Transaction abre uma nova sessão(diferente da mesma que > vc estava fazendo o delete) com isso acredito que vc não consiga pegar o > valor do :OLD já que esta em sessão diferente. > > []s > > > > > Em 12 de maio de 2011 15:24, Lo Bello <rogerio...@gmail.com> escreveu: > > > > > > > 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] > > > > > > > > > > -- > Fabio Martinez > > > [As partes desta mensagem que não continham texto foram removidas] > > > > ------------------------------------ > > > -------------------------------------------------------------------------------------------------------------------------- > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de > inteira responsabilidade de seus remetentes. > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > > -------------------------------------------------------------------------------------------------------------------------- > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure > » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: > http://www.oraclebr.com.br/ > ------------------------------------------------------------------------------------------------------------------------ > Links do Yahoo! Grupos > > > [As partes desta mensagem que não continham texto foram removidas]