Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / Trigger
 

Is a Deleting action or an updating action

SQL> SQL> CREATE TABLE s_item   2  (order_id          NUMBER(7),   3   item_id           NUMBER(7),   4   product_id        NUMBER(7),   5   price             NUMBER(11, 2),   6   quantity          NUMBER(9),   7   quantity_shipped  NUMBER(9)); Table created. SQL> SQL> INSERT INTO s_item VALUES (100, 1, 10011, 135, 500, 500); 1 row created. SQL> INSERT INTO s_item VALUES (100, 2, 10013, 380, 400, 400); 1 row created. SQL> INSERT INTO s_item VALUES (100, 3, 10021, 14, 500, 500); 1 row created. SQL> INSERT INTO s_item VALUES (100, 5, 30326, 582, 600, 600); 1 row created. SQL> INSERT INTO s_item VALUES (100, 7, 41010, 8, 250, 250); 1 row created. SQL> INSERT INTO s_item VALUES (100, 6, 30433, 20, 450, 450); 1 row created. SQL> INSERT INTO s_item VALUES (100, 4, 10023, 36, 400, 400); 1 row created. SQL> INSERT INTO s_item VALUES (101, 1, 30421, 16, 15, 15); 1 row created. SQL> INSERT INTO s_item VALUES (101, 3, 41010, 8, 20, 20); 1 row created. SQL> INSERT INTO s_item VALUES (101, 5, 50169, 4.29, 40, 40); 1 row created. SQL> INSERT INTO s_item VALUES (101, 6, 50417, 80, 27, 27); 1 row created. SQL> INSERT INTO s_item VALUES (101, 7, 50530, 45, 50, 50); 1 row created. SQL> INSERT INTO s_item VALUES (101, 4, 41100, 45, 35, 35); 1 row created. SQL> SQL> CREATE TABLE s_item_log   2   (order_id          NUMBER(7),   3    item_id           NUMBER(7),   4    product_id        NUMBER(7),   5    price             NUMBER(11, 2),   6    quantity          NUMBER(9),   7    quantity_shipped  NUMBER(9),   8    log_type          VARCHAR2(1),   9    log_user          VARCHAR2(30),  10    log_date          DATE); Table created. SQL> SQL> CREATE OR REPLACE TRIGGER bud_item   2  BEFORE UPDATE OR DELETE   3  ON s_item   4  REFERENCING OLD AS OLD NEW AS NEW   5  FOR EACH ROW   6  BEGIN   7     IF (UPDATING) THEN   8        INSERT INTO s_item_log (ORDER_ID, ITEM_ID, PRODUCT_ID,   9           PRICE, QUANTITY, QUANTITY_SHIPPED,  10           LOG_TYPE, LOG_USER, LOG_DATE )  11        VALUES ( :OLD.ORDER_ID, :OLD.ITEM_ID, :OLD.PRODUCT_ID,  12           :OLD.PRICE, :OLD.QUANTITY, :OLD.QUANTITY_SHIPPED,  13           'U', USER, SYSDATE );  14     ELSIF (DELETING) THEN  15        INSERT INTO s_item_log ( ORDER_ID, ITEM_ID, PRODUCT_ID,  16           PRICE, QUANTITY, QUANTITY_SHIPPED,  17           LOG_TYPE, LOG_USER, LOG_DATE )  18        VALUES ( :OLD.ORDER_ID, :OLD.ITEM_ID, :OLD.PRODUCT_ID,  19           :OLD.PRICE, :OLD.QUANTITY, :OLD.QUANTITY_SHIPPED,  20           'D', USER, SYSDATE );  21     END IF;  22  END;  23  / Trigger created. SQL> SQL> drop table s_item; Table dropped. SQL> SQL> drop table s_item_log; Table dropped.