Pessoal,

Bom dia!

 

Tenho a trigger abaixo, na qual eu seleciono alguns dados de duas tabelas 
(conforme cursor) e insiro em um terceira tabela. Mas antes e inserir nessa 
tabela eu deleto os dados existentes nela que são iguais aos que eu estou 
inserindo. Até ai tudo bem, na lógica deveria funcionar, mas ao fazer alguns 
testes verifiquei que ao inserir 3 linhas das tabelas do cursor a trigger 
insere também na tabela de destino, mas se por alguma motivo eu precise inserir 
uma quarta linha para o mesmo boletim, a trigger deleta as linhas 
correspondentes ao boletim na tabela de destino e só insere a ultima linha que 
foi inserido na tabela.

 

O que eu estou fazendo de errado, pois a trigger deveria deixar inserir as 4 
linhas e não só a ultima.

 

 

 

CREATE OR REPLACE TRIGGER "PIMSCS"."ATU_SISMA_PRDEQ_APTMEC_DE" 

    AFTER

INSERT ON "PIMSCS"."APT_MEC_DE" FOR EACH ROW DECLARE

V_DATA DATE;

V_EMP NUMBER(3) := 3;

V_ESP NUMBER(3) := 1;

V_OPER NUMBER(5);

V_EQUIP NUMBER(8);

V_PRD_TON NUMBER(13) := 0;

V_PRD_HA NUMBER(8,3);

v_boletim number(10);

V_BOL_SISMA NUMBER(10);

 

CURSOR C1  IS

SELECT 
:NEW.NO_BOLETIM,B.DT_OPERACAO,:NEW.CD_OPERACAO,B.CD_EQUIPTO,:NEW.QT_PROD_EXEC

  FROM DUAL, APT_MEC_HE B

  WHERE :NEW.FG_TP_APTO='M' AND :NEW.FG_TP_APTO=B.FG_TP_APTO

  AND :NEW.NO_BOLETIM=B.NO_BOLETIM AND :NEW.INSTANCIA=B.INSTANCIA

  aND B.CD_EQUIPTO IN (SELECT CD_EQUIPTO FROM EQUIPTOS WHERE FG_TP_EQUIP=1 AND

  CD_EQUIPTO=B.CD_EQUIPTO)

  AND :new.CD_CCUSTO IN (SELECT CD_CCUSTO FROM CCUSTOS WHERE CD_CCUSTO <> 
'999999999');

 

BEGIN

 

 

delete from sisma_prod_equip where no_boletim = :new.no_boletim;

 

OPEN C1;

FETCH C1 INTO V_BOLETIM,V_DATA,V_OPER,V_EQUIP,V_PRD_HA;

 

if v_data is not null then 

 

INSERT INTO SISMA_PROD_EQUIP 
(DATA,OPERACAO,ESPECIE,EMPRESA,CD_EQUIPTO,PROD_TON,PROD_HA,NO_BOLETIM)

VALUES (V_DATA,V_OPER,V_ESP,V_EMP,V_EQUIP,V_PRD_TON,V_PRD_HA,V_BOLETIM);

 

end if;

 

close c1;

END;

 

_______________________________________________________

 

Luciano Santos

_______________________________________________________

 



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



--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__________________________________________________________________
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
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:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a