TRIGGER

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
feliperdonatti
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Qui, 26 Jan 2012 8:18 am

Pessoal,

Desenvolvi uma trigger para que ao inserir uma carga em determinada tabela ele verifique o conteudo da mesma e de acordo com ele faça um update antes de inserir estes registros. Porém estou tomando o seguinte erro:
"ORA-04091: table OBF.T_TESTE_ODF is mutating, trigger/function may not see it"
"ORA-06512: AT OBF.ALTERA_HORA, line 5"
"ORA-04088: error during execution of trigger OBF.ALTERA_HORA"

Segue abaixo o código da mesma:

Selecionar tudo

create or replace trigger ALTERA_HORA
  before insert on T_TESTE_ODF 
  for each row
declare
  -- local variables here
begin
  IF SUBSTR(:NEW.CONTACT_INFO, 5, 2) = '62' THEN
   UPDATE T_TESTE_ODF SET DAILY_FROM = 36000, DAILY_TILL = 79200;
   END IF;
end ALTERA_HORA;
Se alguém puder me ajudar agradeço.
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Sempre que tentar fazer um DML(INSERT, UPDATE,DELETE) na tabela que dispara a propria trigger, você terá este erro dos X-MEN (mutante).
Se entendi bem você não precisa fazer este update só setar o campo do regostro que você quer inserir com o valor que deseja:

Selecionar tudo

create or replace trigger ALTERA_HORA
  before insert on T_TESTE_ODF
  for each row
declare
  -- local variables here
begin
  IF SUBSTR(:NEW.CONTACT_INFO, 5, 2) = '62' THEN
     :NEW.DAILY_FROM = 36000;
     :NEW.DAILY_TILL = 79200;
   END IF;
end ALTERA_HORA;
feliperdonatti
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Qui, 26 Jan 2012 8:18 am

Obrigado pela ajuda Daniel !!! Funcionou perfeitamente !
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 16 visitantes