From 810a9c6987fee8b743c45ee828ad2fbf1cadb56c Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Wed, 25 Sep 2019 23:04:24 +0200 Subject: [PATCH] Esempi sui trigger --- trigger/TRIGGER_1.sql | 11 +++++++++++ trigger/TRIGGER_2.sql | 20 ++++++++++++++++++++ trigger/TRIGGER_3.sql | 16 ++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 trigger/TRIGGER_1.sql create mode 100644 trigger/TRIGGER_2.sql create mode 100644 trigger/TRIGGER_3.sql diff --git a/trigger/TRIGGER_1.sql b/trigger/TRIGGER_1.sql new file mode 100644 index 0000000..eca086a --- /dev/null +++ b/trigger/TRIGGER_1.sql @@ -0,0 +1,11 @@ +--Esempio Creazione Trigger BEFORE +CREATE OR REPLACE TRIGGER Tr_Sconti +BEFORE INSERT ON SCONTI + FOR EACH ROW +BEGIN + :NEW.ID := ID_SCONTI_SEQ.NEXTVAL; + :NEW.CREAZIONE := SYSDATE; + :NEW.VALORE := 5; + :NEW.ANNO := EXTRACT(YEAR FROM SYSDATE); + :NEW.SCADENZA := SYSDATE + 30; +END; \ No newline at end of file diff --git a/trigger/TRIGGER_2.sql b/trigger/TRIGGER_2.sql new file mode 100644 index 0000000..f07a8d7 --- /dev/null +++ b/trigger/TRIGGER_2.sql @@ -0,0 +1,20 @@ +--Esempio Creazione Trigger AFTER +CREATE OR REPLACE TRIGGER Tr_Coupons_Log +AFTER UPDATE OR DELETE ON COUPONS +FOR EACH ROW +DECLARE + v_TipoModifica VARCHAR2(10); +BEGIN + v_TipoModifica := CASE + WHEN UPDATING THEN 'UPDATE' + WHEN DELETING THEN 'DELETE' + END; + + IF (v_TipoModifica = 'UPDATE') THEN + INSERT INTO LOG_COUPON(DATA,CODFID,QTA,TIPO) + VALUES(SYSDATE,:OLD.CODFID,:NEW.QTA,v_TipoModifica); + ELSE + INSERT INTO LOG_COUPON(DATA,CODFID,QTA,TIPO) + VALUES(SYSDATE,:OLD.CODFID,-1,v_TipoModifica); + END IF; +END; \ No newline at end of file diff --git a/trigger/TRIGGER_3.sql b/trigger/TRIGGER_3.sql new file mode 100644 index 0000000..ec4cc4a --- /dev/null +++ b/trigger/TRIGGER_3.sql @@ -0,0 +1,16 @@ +--ESEMPIO DI TRIGGER INSTEAD OF +CREATE OR REPLACE TRIGGER Tr_Modifica_Vista + INSTEAD OF UPDATE ON VW_CLIENTI_TMP + FOR EACH ROW +BEGIN + + UPDATE CARDS_TEMP + SET ULTIMASPESA = SYSDATE, + BOLLINI = :NEW.BOLLINI + WHERE CODFIDELITY = :OLD.CODFIDELITY; + + UPDATE CLIENTI + SET STATO = 'Attivo' + WHERE CODFIDELITY = :NEW.CODFIDELITY; + +END; \ No newline at end of file