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 <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html