Ciao a tutti Buon Anno,
ho scritto un trigger su oracle che mi permette, ogni volta che una transazione viene chiusa, di inserire o modificare la quantità dell'articolo venduto in una nuova tabella.
Scenario:
TB_TRANSACTIONS; --- Tabella testate vendite ----
TB_TRANS_ARTICLES: --- Tabella dettagli artricoli venduti ---
TB_POS_GIACENZE; --- Tabella da me creata con i dati essenziali per le giacenze ---
TriggerGIACENZE; --- Il trigger che si occupa di aggiornare le giacenze su TB_POS_GIACENZE ---
---------------------------------------------------------------
Codice Trigger:
create or replace
TRIGGER TriggerGIACENZE
AFTER INSERT
ON TB_TRANS_ARTICLES
FOR EACH ROW
DECLARE
ART TB_POS_GIACENZE%ROWTYPE;
BEGIN
SELECT * INTO ART
FROM TB_POS_GIACENZE
WHERE ARTICLE_ID = :NEW.ARTICLE_ID AND CASHREG_ID = :NEW.POS_ID;
IF :NEW.DELETE_OPERATOR_ID IS NULL THEN
UPDATE TB_POS_GIACENZE
SET QTA = QTA + :NEW.QTY_WEIGHT,
PRICE = PRICE + :NEW.PRICE
WHERE ARTICLE_ID = :NEW.ARTICLE_ID AND CASHREG_ID = :NEW.POS_ID;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
IF :NEW.DELETE_OPERATOR_ID IS NULL THEN
INSERT INTO TB_POS_GIACENZE ( ARTICLE_ID, CASHREG_ID, QTA, PRICE )
VALUES ( :NEW.ARTICLE_ID, :NEW.POS_ID , :NEW.QTY_WEIGHT, :NEW.PRICE );
END IF;
END;
---------------------------------------------------------------
Problema:
il POS_ID, che doveva essere l'ID della cassa che chiude la transazione, risulta essere tutt'altra cosa.....
Il CASHREG_ID che a me serve si trova nella testata cioè su TB_TRANSACTIONS.
Dopo vari tentativi mi sono arreso ... non so proprio come modificare il Trigger, mi sapete aiutare ?