Update com 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
douglasmattos
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 75
Registrado em: Seg, 19 Mar 2012 2:28 pm

Pessoal, Bom dia!

Preciso realizar um update em uma tabela utilizando uma trigger, porem não estou conseguindo.
A situação é a seguinte:

Tenho uma tabela chamada IMPRESSAO, onde tem um campo chamado CD_IMRESSAO, DESTINO ETC.... Quando o campo destino receber o valor COLETA eu quero que a trigger altere esse valor para 'não IMPRIMIR'.

consigo fazer uma trigger que monitore a tabela e em determinada situação realize umupdate?

Segue minha Trigger:

Selecionar tudo


CREATE OR REPLACE TRIGGER dbamv.TI_TRG_VERIFICA_IMPRESSAO
AFTER INSERT ON DBAMV.IMPRESSAO
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW

DECLARE

PRAGMA Autonomous_Transaction;

BEGIN

IF (:NEW.DESTINO = 'COLETA')THEN

INSERT INTO DBAMV.TB_DEBUG VALUES (:NEW.CD_IMPRESSAO);

UPDATE dbamv.impressao 
   SET DESTINO = 'não IMPRIMIR' 
 WHERE CD_IMPRESSAO = (SELECT IM.cd_impressao
                         FROM dbamv.impressao IM, DBAMV.IMP_PARAMETRO IP 
                        WHERE IM.CD_IMPRESSAO = IP.CD_IMPRESSAO
                          AND IM.CD_IMPRESSAO = :NEW.CD_IMPRESSAO  
                          AND IP.nome = 'P_SET_EXA'
                          AND IP.valor = 37);

END IF;
commit;     
END;    
Criei uma tabela TB_DEBUG para verificar se a trigger esta pegando o valor do campo CD_IMPRESSAO. a trigger pega o valor normalmente e insere tabela de boa...

Vocês que são os mestres ai, por favor me ajudem... :(
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Boa tarde,

Tente criar a TRIGGER como BEFORE

Before Insert Or Update
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Boa tarde,

Tente criar a TRIGGER como BEFORE

Before Insert Or Update
douglasmattos
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 75
Registrado em: Seg, 19 Mar 2012 2:28 pm

vou fazer um teste....

vlw
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Douglas,

mais uma coisa, não faça o UPDATE, use

Selecionar tudo

:new.DESTINO := 'não IMPRIMIR' ;
ao invés de

Selecionar tudo

UPDATE dbamv.impressao 
   SET DESTINO = 'não IMPRIMIR' 
WHERE CD_IMPRESSAO = (SELECT IM.cd_impressao
                         FROM dbamv.impressao IM, DBAMV.IMP_PARAMETRO IP 
                        WHERE IM.CD_IMPRESSAO = IP.CD_IMPRESSAO
                          AND IM.CD_IMPRESSAO = :NEW.CD_IMPRESSAO  
                          AND IP.nome = 'P_SET_EXA'
                          AND IP.valor = 37);
Responder
  • Informação