Trigger to update stock

0

I'm trying to create a trigger to update my product inventory, when the status of my purchase is closed (CF = Buy Closed).

However, it is giving me an error, and I could not identify what is causing this error to be generated. Anyone have any tips?

O erro é Erro(3,5): PL/SQL: SQL Statement ignored
Erro(3,70): PL/SQL: ORA-00904: "NEW"."IDCOMPRA": identificador inválido
Erro(6,7): PL/SQL: SQL Statement ignored
Erro(6,99): PL/SQL: ORA-00904: "NEW"."IDPRODUTO": identificador inválido

What I did:

CREATE TRIGGER ATUALIZA_ESTOQUE BEFORE INSERT ON ITEMCOMPRA FOR EACH ROW

DECLARE SITUACAOCOMPRA CHAR(2); 

BEGIN
    SELECT SITUACAOCOMPRA INTO SITUACAOCOMPRA FROM COMPRA WHERE ID = NEW.IDCOMPRA;
    IF(SITUACAOCOMPRA = 'CF') THEN  
    --BEGIN
      UPDATE PRODUTO SET QUANTIDADEPRODUTO = QUANTIDADEPRODUTO + NEW.QUANTIDADEPRODUTO WHERE ID = NEW.IDPRODUTO;   
    --END;
END IF;
END;
    
asked by anonymous 23.08.2017 / 23:30

1 answer

2

You need to identify the trigger variable, so:

: NEW (missing colon)

CREATE OR REPLACE TRIGGER ATUALIZA_ESTOQUE BEFORE INSERT ON ITEMCOMPRA 
REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW

DECLARE SITUACAOCOMPRA CHAR(2); 

BEGIN
    SELECT SITUACAOCOMPRA INTO SITUACAOCOMPRA FROM COMPRA WHERE ID = :NEW.IDCOMPRA;
    IF(SITUACAOCOMPRA = 'CF') THEN  
    --BEGIN
      UPDATE PRODUTO SET QUANTIDADEPRODUTO = QUANTIDADEPRODUTO + :NEW.QUANTIDADEPRODUTO WHERE ID = :NEW.IDPRODUTO;   
    --END;
END IF;
END;
    
24.08.2017 / 00:20