Fórum Erro de sintaxe na Trigger #57258
16/11/2006
0
Pessoal
Não estou conseguindo executar uma trigger. Estou fazendo assim:
CREATE TRIGGER TRIUPDCHEQUE FOR CMCHEQUE
ACTIVE AFTER UPDATE POSITION 0
AS
begin
if (NEW.FGSITUACAO = 2) then
DELETE FROM CMMOVFIN
WHERE CDCHEQUE = NEW.CDCHEQUE;
if (NEW.FGSITUACAO = 3) THEN
BEGIN
UPDATE CMCONTAPAGAR C SET C.FGSITUACAO = 1
WHERE C.CDCONTA IN (SELECT CT.CDCONTA FROM CMCTPAGCHEQUE CT WHERE CT.CDCHEQUE = NEW.CDCHEQUE);
END
if (NEW.FGSITUACAO = 4) then
BEGIN
DELETE FROM CMMOVFIN
WHERE CDCHEQUE = NEW.CDCHEQUE;
INSERT INTO CMMOVFIN(CDMOVIMENTO,CDCHEQUE,CDCONTABANCOSAIDA,FGTIPOSAIDA,DTMOVIMENTO,MNVALOR,CDEMPRESA,FGENABLEUPD,NMCOMPLEMENTO)
SELECT(SELECT CASE WHEN(MAX(CDMOVIMENTO) + 1) IS NULL THEN 1
ELSE MAX(CDMOVIMENTO) + 1
END
FROM CMMOVFIN), NEW.CDCHEQUE, NEW.CDCONTABANCO, 6, NEW.DTEMISSAO, NEW.MNCHEQUE,NEW.CDEMPRESA,2, ´Nr. cheque: ´ || NEW.IDCHEQUE || ´ Emitido em: ´ || SUBSTRING(NEW.DTEMISSAO FROM 9 FOR 2) || ´/´ || SUBSTRING(NEW.DTEMISSAO FROM 6 FOR 2) || ´/´ || SUBSTRING(NEW.DTEMISSAO FROM 1 FOR 4)
FROM CMCHEQUE WHERE CDCHEQUE = NEW.CDCHEQUE;
END
END
Está dando erro na linha :
Ele acusa que não reconhece NEW.CDCHEQUE
Está dando erro na linha:
if (NEW.FGSITUACAO = 3) THEN
BEGIN
UPDATE CMCONTAPAGAR C SET C.FGSITUACAO = 1
WHERE C.CDCONTA IN (SELECT CT.CDCONTA FROM CMCTPAGCHEQUE CT WHERE CT.CDCHEQUE = NEW.CDCHEQUE);
END
Ele acusa que não reconhece NEW.CDCHEQUE. Estranho, esse campo existe
Alguém pode me ajudar ???
Fico no aguardo
Rogério
Não estou conseguindo executar uma trigger. Estou fazendo assim:
CREATE TRIGGER TRIUPDCHEQUE FOR CMCHEQUE
ACTIVE AFTER UPDATE POSITION 0
AS
begin
if (NEW.FGSITUACAO = 2) then
DELETE FROM CMMOVFIN
WHERE CDCHEQUE = NEW.CDCHEQUE;
if (NEW.FGSITUACAO = 3) THEN
BEGIN
UPDATE CMCONTAPAGAR C SET C.FGSITUACAO = 1
WHERE C.CDCONTA IN (SELECT CT.CDCONTA FROM CMCTPAGCHEQUE CT WHERE CT.CDCHEQUE = NEW.CDCHEQUE);
END
if (NEW.FGSITUACAO = 4) then
BEGIN
DELETE FROM CMMOVFIN
WHERE CDCHEQUE = NEW.CDCHEQUE;
INSERT INTO CMMOVFIN(CDMOVIMENTO,CDCHEQUE,CDCONTABANCOSAIDA,FGTIPOSAIDA,DTMOVIMENTO,MNVALOR,CDEMPRESA,FGENABLEUPD,NMCOMPLEMENTO)
SELECT(SELECT CASE WHEN(MAX(CDMOVIMENTO) + 1) IS NULL THEN 1
ELSE MAX(CDMOVIMENTO) + 1
END
FROM CMMOVFIN), NEW.CDCHEQUE, NEW.CDCONTABANCO, 6, NEW.DTEMISSAO, NEW.MNCHEQUE,NEW.CDEMPRESA,2, ´Nr. cheque: ´ || NEW.IDCHEQUE || ´ Emitido em: ´ || SUBSTRING(NEW.DTEMISSAO FROM 9 FOR 2) || ´/´ || SUBSTRING(NEW.DTEMISSAO FROM 6 FOR 2) || ´/´ || SUBSTRING(NEW.DTEMISSAO FROM 1 FOR 4)
FROM CMCHEQUE WHERE CDCHEQUE = NEW.CDCHEQUE;
END
END
Está dando erro na linha :
Ele acusa que não reconhece NEW.CDCHEQUE
Está dando erro na linha:
if (NEW.FGSITUACAO = 3) THEN
BEGIN
UPDATE CMCONTAPAGAR C SET C.FGSITUACAO = 1
WHERE C.CDCONTA IN (SELECT CT.CDCONTA FROM CMCTPAGCHEQUE CT WHERE CT.CDCHEQUE = NEW.CDCHEQUE);
END
Ele acusa que não reconhece NEW.CDCHEQUE. Estranho, esse campo existe
Alguém pode me ajudar ???
Fico no aguardo
Rogério
Rogeranalista
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)