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]

Reply via email to