Res: [oracle_br] Trigger mutanting

2009-11-26 Por tôpico Rejane Cristina Messias Correia
Oi Debora tenta colocar no declare o comando abaixo.


DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;

Rejane.




De: Eduardo Souza 
Para: oracle_br@yahoogrupos.com.br
Enviadas: Quarta-feira, 25 de Novembro de 2009 14:09:06
Assunto: Re: [oracle_br] Trigger mutanting

Poderia enviar o código da solução adotada?

2009/11/25 Débora Acácio 

>
>
>
> Faz só um select e por isso estava dando erro.
>
> Fiz uma packege e alimentei duas variáveis pela trigger before... e na
> After eu valido com a package...
>
> Já está tudo ok
> Obrigada...
> Debby :)
>
>
> --- Em qua, 25/11/09, Eduardo 
> >
> escreveu:
>
> De: Eduardo >
> Assunto: Re: [oracle_br] Trigger mutanting
> Para: oracle_br@yahoogrupos.com.br 
> Data: Quarta-feira, 25 de Novembro de 2009, 11:53
>
>
> ela está alterando a tabela que a dispara?
>
> 2009/11/25 Débora Acácio 
> 
> >
>
> >
> >
> > Olá
> >
> > Estou tendo um problema numa trigger que estou alterando está dando
> > erro de trigger mutanting... alguém poderia me ajudar ?
> >
> > Grata
> >
> >
> > Debby :)
> >
> >
> >
> > __
> > Veja quais são os assuntos do momento no Yahoo! +Buscados
> > http://br.maisbuscados.yahoo.com
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
> --
> --
>
> Eduardo
>
> [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
>
> __
> Veja quais são os assuntos do momento no Yahoo! +Buscados
> http://br.maisbuscados.yahoo.com
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[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


  

Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

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



Re: [oracle_br] Trigger mutanting

2009-11-25 Por tôpico Eduardo Souza
Poderia enviar o código da solução adotada?

2009/11/25 Débora Acácio 

>
>
>
> Faz só um select e por isso estava dando erro.
>
> Fiz uma packege e alimentei duas variáveis pela trigger before... e na
> After eu valido com a package...
>
> Já está tudo ok
> Obrigada...
> Debby :)
>
>
> --- Em qua, 25/11/09, Eduardo 
> >
> escreveu:
>
> De: Eduardo >
> Assunto: Re: [oracle_br] Trigger mutanting
> Para: oracle_br@yahoogrupos.com.br 
> Data: Quarta-feira, 25 de Novembro de 2009, 11:53
>
>
> ela está alterando a tabela que a dispara?
>
> 2009/11/25 Débora Acácio 
> 
> >
>
> >
> >
> > Olá
> >
> > Estou tendo um problema numa trigger que estou alterando está dando
> > erro de trigger mutanting... alguém poderia me ajudar ?
> >
> > Grata
> >
> >
> > Debby :)
> >
> >
> >
> > __
> > Veja quais são os assuntos do momento no Yahoo! +Buscados
> > http://br.maisbuscados.yahoo.com
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
> --
> --
>
> Eduardo
>
> [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
>
> __
> Veja quais são os assuntos do momento no Yahoo! +Buscados
> http://br.maisbuscados.yahoo.com
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[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




Re: [oracle_br] Trigger mutanting - Aristides

2009-11-25 Por tôpico Débora Acácio
Obrigada Aristides e todos que me responderam..
 
Fiz uma package e criei uma outra trigger AFTER e resolvi o problema...
 
Sds
 
Debby

--- Em qua, 25/11/09, Arystydes  escreveu:


De: Arystydes 
Assunto: Re: [oracle_br] Trigger mutanting
Para: oracle_br@yahoogrupos.com.br
Data: Quarta-feira, 25 de Novembro de 2009, 16:30


Olha, veja se consegue fazer isso via "procedure" !!!
Estou dando uma opinião no "escuro" (não sei do que se trata) mas, 
dependendo da situação, via aplicação pode chamar uma "procedure" em alguns 
casos.

Abraço,
Aristides

2009/11/25 Débora Acácio 

>
>
> Olá
>
> Estou tendo um problema numa trigger que estou alterando está dando
> erro de trigger mutanting... alguém poderia me ajudar ?
>
> Grata
>
>
> Debby :)
>
>
>
> __
> Veja quais são os assuntos do momento no Yahoo! +Buscados
> http://br.maisbuscados.yahoo.com
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>



-- 
--


Eduardo


[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






--
>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





  

Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

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



Re: [oracle_br] Trigger mutanting

2009-11-25 Por tôpico Débora Acácio

Faz só um select e por isso estava dando erro.
 
Fiz uma packege e alimentei duas variáveis pela trigger before... e na 
After eu valido com a package...
 
Já está tudo ok
Obrigada...
Debby :)
 

--- Em qua, 25/11/09, Eduardo  escreveu:


De: Eduardo 
Assunto: Re: [oracle_br] Trigger mutanting
Para: oracle_br@yahoogrupos.com.br
Data: Quarta-feira, 25 de Novembro de 2009, 11:53


ela está alterando a tabela que a dispara?



2009/11/25 Débora Acácio 

>
>
> Olá
>
> Estou tendo um problema numa trigger que estou alterando está dando
> erro de trigger mutanting... alguém poderia me ajudar ?
>
> Grata
>
>
> Debby :)
>
>
>
> __
> Veja quais são os assuntos do momento no Yahoo! +Buscados
> http://br.maisbuscados.yahoo.com
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
--


Eduardo


[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





  

Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

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



Re: [oracle_br] Trigger mutanting

2009-11-25 Por tôpico Arystydes
Olha, veja se consegue fazer isso via "procedure" !!!
Estou dando uma opinião no "escuro" (não sei do que se trata) mas, 
dependendo da situação, via aplicação pode chamar uma "procedure" em alguns 
casos.

Abraço,
Aristides

2009/11/25 Débora Acácio 

>
>
> Olá
>
> Estou tendo um problema numa trigger que estou alterando está dando
> erro de trigger mutanting... alguém poderia me ajudar ?
>
> Grata
>
>
> Debby :)
>
>
>
> __
> Veja quais são os assuntos do momento no Yahoo! +Buscados
> http://br.maisbuscados.yahoo.com
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>



-- 
--


Eduardo


[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




Res: RES: [oracle_br] Trigger mutanting

2009-11-25 Por tôpico Caio Spadafora
Ainda recomendaria o a utilização de uma transação autonoma.

O problema de trigger mutante tambem é propagado em referências cíclicas, para 
o caso em questão não vejo grandes problemas de utilizar a transação autonoma.

Atenciosamente,
Caio Spadafora.





De: Sérgio Luiz Rodrigues Chaves 
Para: oracle_br@yahoogrupos.com.br
Enviadas: Quarta-feira, 25 de Novembro de 2009 11:59:13
Assunto: RES: [oracle_br] Trigger mutanting

  
Debby,

Vou listar o procedimento básico para resolver esse problema:

1)   Tenho a tabela funcionário com a seguinte estrutura:

CREATE TABLE FUNC

(

CD_MATNUMBER(3) NOT NULL PRIMARY KEY,

NR_GITNUMBER(2),

VL_SALNUMBER(9,2)

2)   Tenho uma trigger para atualizar o salário do funcionário.

CREATE OR REPLACE TRIGGER checa_salario

BEFORE UPDATE OF vl_sal, nr_git ON FUNC

FOR EACH ROW WHEN (NEW.nr_git < 56)

DECLARE

salario_minimo   NUMBER(5) := 0;

salario_maximo   NUMBER(5) := 0;

faixaEXCEPTION;

negativo EXCEPTION;

BEGIN

SELECT MIN(vl_sal), Max(vl_sal)

INTO salario_minimo, salario_maximo

FROM FUNC

WHERE nr_git = :new.nr_git;

IF (:NEW.vl_sal < salario_minimo OR

:NEW.vl_sal > salario_maximo) THEN

RAISE faixa;

ELSIF (:NEW.VL_SAL < :OLD.vl_sal) THEN

RAISE negativo;

END IF;

EXCEPTION

WHEN faixa THEN

RAISE_APPLICATION_ ERROR (-20225, 'Salário fora da faixa');

WHEN negativo THEN

RAISE_APPLICATION_ ERROR (-20230, 'Incremento negativo');

END;

Que quando executo dá erro de "multante", pois estou realizando uma consulta na 
mesma tabela que estou atualizando.

3)   Resolvendo.. .. Criei uma tabela temporária com a mesma estrutura de 
FUNC de nome TFUNC_MUT.

DROP TABLE TFUNC_MUT;

CREATE TABLE TFUNC_MUT

(

CD_MATNUMBER(3) NOT NULL PRIMARY KEY,

NR_GITNUMBER(2),

VL_SALNUMBER(9,2),

NR_ORDEM  NUMBER,--- nova coluna

STATUSVARCHAR2(10) --- nova coluna

)

DROP SEQUENCE ORDEM

/

CREATE SEQUENCE ORDEM

ORDER

START WITH 1

NOCYCLE

/

4)   Recrio a trigger gravando na tabela temporária

CREATE OR REPLACE TRIGGER checa_salario

BEFORE UPDATE OF vl_sal, nr_git ON FUNC

FOR EACH ROW WHEN (NEW.nr_git < 56)

DECLARE

salario_minimo   NUMBER(5) := 0;

salario_maximo   NUMBER(5) := 0;

qtd  NUMBER;

negativo EXCEPTION;

BEGIN

IF (:NEW.VL_SAL < :OLD.vl_sal) THEN

RAISE negativo;

ELSE

SELECT COUNT(*) INTO qtd FROM tfunc_mut

where cd_mat = :new.cd_mat;

IF qtd = 0 THEN

INSERT INTO TFUNC_MUT (cd_mat, vl_sal, nr_git, nr_ordem, status)

VALUES (:NEW.cd_mat, :NEW.vl_sal, :NEW.nr_git,

ordem.nextval, 'VALID');

:NEW.vl_sal := :OLD.vl_sal;

end if;

END IF;

EXCEPTION

WHEN negativo THEN

RAISE_APPLICATION_ ERROR (-20230, 'Incremento negativo');

END; 

5)   Crio nova trigger 

CREATE OR REPLACE TRIGGER checa_salario_ mut

AFTER UPDATE OF vl_sal, nr_git ON FUNC

DECLARE

cursor wc is SELECT * FROM tfunc_mut

WHERE status = 'VALID'

ORDER BY NR_ORDEM

FOR UPDATE;

salario_minimo   NUMBER(5) := 0;

salario_maximo   NUMBER(5) := 0;

faixaEXCEPTION;

TYPE TIPO_MUT IS TABLE OF TFUNC_MUT%ROWTYPE

INDEX BY BINARY_INTEGER;

TABMUT   TIPO_MUT;

I   NUMBER := 0;

BEGIN

FOR wr IN wc LOOP

SELECT MIN(vl_sal), MAX(vl_sal)

INTO salario_minimo, salario_maximo

FROM func

WHERE nr_git = wr.nr_git;

IF wr.vl_sal < salario_minimo OR

wr.vl_sal > salario_maximo THEN

RAISE faixa;

ELSE

I := I + 1;

TABMUT(I) := WR;

UPDATE tfunc_mut SET status = 'INVALID';

END IF;

END LOOP;

FOR J IN 1..I LOOP

UPDATE func SET vl_sal = TABMUT(J).vl_ sal,

nr_git = TABMUT(J).nr_ git

WHERE cd_mat = TABMUT(J).cd_ mat;

END LOOP;

IF I > 0 THEN

DELETE FROM tfunc_mut;

END IF;

EXCEPTION

WHEN faixa THEN

DELETE FROM tfunc_mut;

RAISE_APPLICATION_ ERROR (-20230, 'Salário fora da faixa');

END;

/

Verifique se os códigos acima lhe ajudam para resolver seu problema.

Boa sorte.

Atenciosamente, Sérgio Chaves. 

 _ _ __

De: oracle...@yahoogrup os.com.br [mailto:oracle...@yahoogrup os.com.br] Em 
nome de Sergio Lucchini
Enviada em: quarta-feira, 25 de novembro de 2009 10:58
Para: oracle...@yahoogrup os.com.br
Assunto: RES: [oracle_br] Trigger mutanting

Isso ocorre quando vc precisa acessa a tabela onde esta a trigger. Vc pode 
declarar a sua trigger como Pragma Autonomous_Transact ion para eliminar esse 
erro.

Exemplo:

CREATE OR REPLACE TRIGGER nome_trigger AFTER UPDATE
ON nome_tabela REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE

Pragma Autonomous_Transact ion;

BEGIN


Sergio Lucchini

 _ _ __
De: oracle...@yahoogrup os.com.br <mailto:oracle_ br%40yahoogrupos .com.br>  
[mailto:oracle...@yahoogrup os.com.br <mailto:oracle_ br%40yahoogrupos .com.br> 
] Em nom

RES: [oracle_br] Trigger mutanting

2009-11-25 Por tôpico Sérgio Luiz Rodrigues Chaves
Debby,

 

Vou listar o procedimento básico para resolver esse problema:

 

1)   Tenho a tabela funcionário com a seguinte estrutura:

CREATE TABLE FUNC

(

 CD_MATNUMBER(3) NOT NULL PRIMARY KEY,

 NR_GITNUMBER(2),

 VL_SALNUMBER(9,2)

2)   Tenho uma trigger para atualizar o salário do funcionário.

CREATE OR REPLACE TRIGGER checa_salario

BEFORE UPDATE OF vl_sal, nr_git ON FUNC

FOR EACH ROW WHEN (NEW.nr_git < 56)

DECLARE

  salario_minimo   NUMBER(5) := 0;

  salario_maximo   NUMBER(5) := 0;

  faixaEXCEPTION;

  negativo EXCEPTION;

BEGIN

  SELECT MIN(vl_sal), Max(vl_sal)

   INTO salario_minimo, salario_maximo

  FROM FUNC

  WHERE nr_git = :new.nr_git;

  IF (:NEW.vl_sal < salario_minimo OR

  :NEW.vl_sal > salario_maximo) THEN

 RAISE faixa;

  ELSIF (:NEW.VL_SAL < :OLD.vl_sal) THEN

 RAISE negativo;

  END IF;

EXCEPTION

  WHEN faixa THEN

RAISE_APPLICATION_ERROR (-20225, 'Salário fora da faixa');

  WHEN negativo THEN

RAISE_APPLICATION_ERROR (-20230, 'Incremento negativo');

END;

 

Que quando executo dá erro de "multante", pois estou realizando uma consulta na 
mesma tabela que estou atualizando.

 

3)   Resolvendo Criei uma tabela temporária com a mesma estrutura de 
FUNC de nome TFUNC_MUT.

 

DROP TABLE TFUNC_MUT;

CREATE TABLE TFUNC_MUT

(

 CD_MATNUMBER(3) NOT NULL PRIMARY KEY,

 NR_GITNUMBER(2),

 VL_SALNUMBER(9,2),

 NR_ORDEM  NUMBER,--- nova coluna

 STATUSVARCHAR2(10) --- nova coluna

)

DROP SEQUENCE ORDEM

/

CREATE SEQUENCE ORDEM

ORDER

START WITH 1

NOCYCLE

/

4)   Recrio a trigger gravando na tabela temporária

 

CREATE OR REPLACE TRIGGER checa_salario

BEFORE UPDATE OF vl_sal, nr_git ON FUNC

FOR EACH ROW WHEN (NEW.nr_git < 56)

DECLARE

  salario_minimo   NUMBER(5) := 0;

  salario_maximo   NUMBER(5) := 0;

  qtd  NUMBER;

  negativo EXCEPTION;

BEGIN

  IF (:NEW.VL_SAL < :OLD.vl_sal) THEN

 RAISE negativo;

  ELSE

 SELECT COUNT(*) INTO qtd FROM tfunc_mut

   where cd_mat = :new.cd_mat;

 IF qtd = 0 THEN

INSERT INTO TFUNC_MUT (cd_mat, vl_sal, nr_git, nr_ordem, status)

  VALUES (:NEW.cd_mat,:NEW.vl_sal,:NEW.nr_git,

  ordem.nextval, 'VALID');

:NEW.vl_sal := :OLD.vl_sal;

 end if;

  END IF;

EXCEPTION

  WHEN negativo THEN

RAISE_APPLICATION_ERROR (-20230, 'Incremento negativo');

END; 

 

5)   Crio nova trigger  

 

CREATE OR REPLACE TRIGGER checa_salario_mut

AFTER UPDATE OF vl_sal, nr_git ON FUNC

DECLARE

  cursor wc is SELECT * FROM tfunc_mut

   WHERE status = 'VALID'

   ORDER BY NR_ORDEM

   FOR UPDATE;

  salario_minimo   NUMBER(5) := 0;

  salario_maximo   NUMBER(5) := 0;

  faixaEXCEPTION;

  TYPE TIPO_MUT IS TABLE OF TFUNC_MUT%ROWTYPE

   INDEX BY BINARY_INTEGER;

  TABMUT   TIPO_MUT;

  I   NUMBER := 0;

BEGIN

  FOR wr IN wc LOOP

SELECT MIN(vl_sal), MAX(vl_sal)

  INTO salario_minimo, salario_maximo

  FROM func

 WHERE nr_git = wr.nr_git;

 IF wr.vl_sal < salario_minimo OR

wr.vl_sal > salario_maximo THEN

RAISE faixa;

 ELSE

I := I + 1;

TABMUT(I) := WR;

UPDATE tfunc_mut SET status = 'INVALID';

 END IF;

  END LOOP;

  FOR J IN 1..I LOOP

  UPDATE func SET vl_sal = TABMUT(J).vl_sal,

  nr_git = TABMUT(J).nr_git

 WHERE cd_mat = TABMUT(J).cd_mat;

  END LOOP;

  IF I > 0 THEN

 DELETE FROM tfunc_mut;

  END IF;

EXCEPTION

  WHEN faixa THEN

DELETE FROM tfunc_mut;

RAISE_APPLICATION_ERROR (-20230, 'Salário fora da faixa');

END;

/

 

 

 

Verifique se os códigos acima lhe ajudam para resolver seu problema.

 

Boa sorte.

 

Atenciosamente, Sérgio Chaves. 





 



De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome 
de Sergio Lucchini
Enviada em: quarta-feira, 25 de novembro de 2009 10:58
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] Trigger mutanting

 

  

Isso ocorre quando vc precisa acessa a tabela onde esta a trigger. Vc pode 
declarar a sua trigger como Pragma Autonomous_Transaction para eliminar esse 
erro.

Exemplo:

CREATE OR REPLACE TRIGGER nome_trigger AFTER UPDATE
ON nome_tabela REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE

Pragma Autonomous_Transaction;

BEGIN


Sergio Lucchini


De: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>  
[mailto:oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> ] 
Em nome de Débora Acácio
Enviada em: quarta-feira, 25 de novembro de 

RES: [oracle_br] Trigger mutanting

2009-11-25 Por tôpico Sergio Lucchini
Isso ocorre quando vc precisa acessa a tabela onde esta a trigger. Vc pode 
declarar a sua trigger como Pragma Autonomous_Transaction para eliminar esse 
erro.

Exemplo:

CREATE OR REPLACE TRIGGER nome_trigger AFTER UPDATE
ON nome_tabela REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE

Pragma Autonomous_Transaction;

BEGIN



Sergio Lucchini


De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome 
de Débora Acácio
Enviada em: quarta-feira, 25 de novembro de 2009 09:41
Para: Grp Oracle
Assunto: [oracle_br] Trigger mutanting



Olá

Estou tendo um problema numa trigger que estou alterando está dando erro de 
trigger mutanting... alguém poderia me ajudar ?

Grata


Debby :)



__
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

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


No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 8.5.423 / Virus Database: 270.14.81/2524 - Release Date: 11/24/09 
19:37:00


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



RES: [oracle_br] Trigger mutanting

2009-11-25 Por tôpico Valtemir Araujo de Lima
vc pode criar uma package para resolver o problema:
 
na primeira trigger:
create or replace trigger NOMETRIGGER_1
   after  insert or update or delete
 on NOMETABELA
   for each row
declare
   ..
begin
   if :new.atributo = ...
  PACOTE_PKG.VARIAVEL :=  X  usar a variavel de uma package para
guardar seu conteudo para fazer select na mesma tabela da trigger
   .
end;
 
 
 
 
na package
create or replace package  PACOTE_PKG as 
   VARIAVELnumber(10);
end;
 
 
 
 
na segunda trigger  de sua tabela
create or replace trigger NOMETRIGGER_1
   after insert or update or delete on NOMETABELA
declare
   
Begin
   if  PACOTE_PKG.VARIAVEL  is not null then
  select ... --pode fazer select na mesma tabela da primeira trigger
  from NOMETABELA
  where coluna = PACOTE_PKG.VARIAVEL  
  end if;
end;
 
 
 
 

-Mensagem original-
De: Débora Acácio [mailto:debby_ora...@yahoo.com.br]
Enviada em: 25 de novembro de 2009 08:41
Para: Grp Oracle
Assunto: [oracle_br] Trigger mutanting


  

Olá
 
Estou tendo um problema numa trigger que estou alterando está dando erro
de trigger mutanting... alguém poderia me ajudar ?
 
Grata
 
 
Debby :)
 
 

__
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbusca <http://br.maisbuscados.yahoo.com> dos.yahoo.com

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







Re: [oracle_br] Trigger mutanting

2009-11-25 Por tôpico Eduardo
ela está alterando a tabela que a dispara?



2009/11/25 Débora Acácio 

>
>
> Olá
>
> Estou tendo um problema numa trigger que estou alterando está dando
> erro de trigger mutanting... alguém poderia me ajudar ?
>
> Grata
>
>
> Debby :)
>
>
>
> __
> Veja quais são os assuntos do momento no Yahoo! +Buscados
> http://br.maisbuscados.yahoo.com
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
--


Eduardo


[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




[oracle_br] Trigger mutanting

2009-11-25 Por tôpico Débora Acácio
Olá
 
Estou tendo um problema numa trigger que estou alterando está dando erro de 
trigger mutanting... alguém poderia me ajudar ?
 
Grata
 
 
Debby :)
 
 


  

Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

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