É que não listei a trigger toda é que tenho num sistema de terceiro que
garantir que uma informação no pedido filho está de acordo com uma
informação que está no pedido pai, sendo que os dois estão na mesma tabela,
e caso essa informação não esteja consistente quero emitir um raise.

 

Isso tudo eu sei como desenrolar, meu problema é que se eu der o select para
achar o pedido pai e verificar a informação para testar a consistência vai
dar o erro de tabela mutante

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Usuário do Sistema
Enviada em: terça-feira, 20 de maio de 2008 16:40
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] Problema com tabelas mutante em trigger

 

Uma trigger serve para disparar uma ação sempre que houver algum tipo de
alteração na tabela, além claro de triggers de auditoria, etc, se você quer
apenas fazer uma consulta na tabela não é necessário usar trigger.

Em 20/05/08, Alexandre Rocha Placido <[EMAIL PROTECTED]
<mailto:aplacido.oracle%40gmail.com> > escreveu:
>
> Para ter certeza que entendi as idéias que mandaram.
>
> TRIGGER PED_VENDA_TRG
>
> BEGIN
>
> SELECT * FROM PEDIDO_VENDA WHERE PED_CODIGO = :NEW.PED_ATACADISTA;
>
> + algumas instruções e testes
>
> END;
>
> Não quero fazer update na tabela, quero consultar uma outra linha desta
> mesma tabela para poder fazer algumas verificações.
>
> De: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>
<oracle_br%40yahoogrupos.com.br> [mailto:
> oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>
<oracle_br%40yahoogrupos.com.br>] Em
> nome de Usuário do Sistema
> Enviada em: terça-feira, 20 de maio de 2008 15:53
> Para: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>
<oracle_br%40yahoogrupos.com.br>
> Assunto: Re: [oracle_br] Problema com tabelas mutante em trigger
>
> Sua pergunta esta um pouco confusa, mas pelo que percebi vc tem uma
trigger
> na tabela, e ela se auto atualiza, gerando o erro de tabela mutante, se
for
> esse o seu caso basta criar uma view identica a tabela, e colocar a
trigger
> na view, lembre-se que a trigger é instead of insert,update,delete on
table
> for each row ..
>
> Exemplo:
>
> create table PEDIDO
> (
> ID NUMBER,
> DESCR VARCHAR2(200)
> );
>
> create or replace view vw_pedido as
> select "ID","DESCR" from pedido;
>
> create or replace trigger trg_vw_pedido instead of insert on vw_pedido
> for each row
> BEGIN
> insert into pedido(id,descr)
> values(:new.id,:new.descr);
> END;
>
> Dessa forma vc pode alterar a a view sem problemas.
>
> Um abraço.
>
> Em 20/05/08, Alexandre Rocha Placido <[EMAIL PROTECTED]
<mailto:aplacido.oracle%40gmail.com> <aplacido.oracle%40gmail.com>
> <mailto:aplacido.oracle%40gmail.com <aplacido.oracle%2540gmail.com>> >
> escreveu:
> >
> > Estou com um problema para resolver com uma trigger só que não vai
> > funcionar
> > no normal porque o Orac Le irá reclamar de tabela mutante.
> >
> > O problema é o seguinte eu tenho numa mesma tabela pedido atacadista e
> > pedido normal, queria testar quando vou gravar um pedido normal se um
> > determinado atributo dele é o mesmo do pedido atacadista a que ele se
> > refere.
> >
> > Não consigo fazer um select dentro de uma trigger porque vai dar o
> problema
> > de tabela mutante.
> >
> > Alguém tem uma idéia de como criar um artifício que resolva este
> problema?
> >
> > Alexandre Rocha Placido
> >
> > image002Gerente de TI
> >
> > DITEC - Agrovale
> >
> > 74 3612-2900
> >
> > 87 8802-0474
> >
> > [EMAIL PROTECTED] <mailto:aplacido%40agrovale.com>
<aplacido%40agrovale.com> <mailto:
> aplacido%40agrovale.com <aplacido%2540agrovale.com>>
> <aplacido%40agrovale.com>
> >
> > MSN: [EMAIL PROTECTED] <mailto:aplacido%40gmail.com>
<aplacido%40gmail.com> <mailto:
> aplacido%40gmail.com <aplacido%2540gmail.com>>
> <aplacido%40gmail.com>
> >
> > P Ler aqui sem imprimir é mais legal e faz bem ao meio ambiente.
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 
>

[As partes desta mensagem que não continham texto foram removidas]

 



[As partes desta mensagem que não continham texto foram removidas]

Responder a