Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Renato_2009

Triger Só Atuliza Primeiro Bloco do Programa

Recommended Posts

CREATE OR REPLACE TRIGGER ....

 

BEGIN

...

-- CHAMA PROCEDURE

PROCEDURE_TESTE(P1,P2,P3);

...

END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tabela mutante, não se pode fazer um update na própria tabela em que se está alterando via update.

 

Em que condições se precisa alterar a tabela ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja a Procedure: http://forum.imasters.com.br/public/style_emoticons/default/natal_sad.gif

 

CREATE OR REPLACE PROCEDURE ATUALIZA_SH_PCWMSOUTPUT

IS

 

BEGIN

 

BEGIN

FOR R IN (SELECT TIPO,

NUMERO,

CODPROD,

CODCLI,

CODFORNEC,

CODFILIAL,

QTSEP,

QTREC,

QTAVA,

QTCOR,

DTEMISSAO,

SEMAFORO,

DTPROCESSAMENTO,

NUMLOTE,

DTFABRICACAO

FROM PCWMSOUTPUT

WHERE TIPO = 'E'AND SEMAFORO = '1')

LOOP

INSERT INTO "sh_pcwmsoutput"@logix VALUES (R.TIPO,

R.NUMERO,

R.CODPROD,

R.CODCLI,

R.CODFORNEC,

R.CODFILIAL,

R.QTSEP,

R.QTREC,

R.QTAVA,

R.QTCOR,

R.DTEMISSAO,

R.SEMAFORO,

R.DTPROCESSAMENTO,

R.NUMLOTE,

R.DTFABRICACAO);

END LOOP;

COMMIT;

END;

 

BEGIN

UPDATE PCWMSOUTPUT

SET SEMAFORO = 3

WHERE TIPO = 'E' AND SEMAFORO = 1;

COMMIT;

END;

 

 

EXCEPTION

WHEN OTHERS THEN

ROLLBACK;

 

END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq voc~e precisa fazer

 

UPDATE PCWMSOUTPUT

SET SEMAFORO = 3

WHERE TIPO = 'E' AND SEMAFORO = 1;

COMMIT;

END;

 

a cada insert da tabela ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sua trigger inicial estava quase certa só não precisa do update, basta fazer o insert da replicação para cada registro no insert apenas.

Não é necessário o update pois não vai inserir duas vezes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.