Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / Trigger
 

Autonomous triggers

SQL> SQL> CREATE TABLE order_tab(   2     order_id     NUMBER(10) PRIMARY KEY,   3     order_date   DATE NOT NULL,   4     total_qty    NUMBER,   5     total_price  NUMBER(15,2),   6     supp_id      NUMBER(6)   7  ); Table created. SQL> SQL> CREATE TABLE order_tran_coming_in(   2     order_id              NUMBER(10)  NOT NULL,   3     order_date            DATE        NOT NULL,   4     tran_coming_in_date   DATE        NOT NULL,   5     success_flag          VARCHAR2(1) DEFAULT 'N' NOT NULL); Table created. SQL> SQL> create or replace trigger bi_order_tab   2  before insert on order_tab for each row   3  declare   4    pragma autonomous_transaction;   5  begin   6    insert into order_tran_coming_in values (:NEW.order_id,   7                                             :NEW.order_date,   8                                             SYSDATE,   9                                             'N');  10    commit;  11  end;  12  / Trigger created. SQL> create or replace trigger ai_order_tab   2  after insert on order_tab for each row   3  declare   4    pragma autonomous_transaction;   5  begin   6    update order_tran_coming_in   7    set    success_flag = 'Y'   8    where  order_id = :NEW.order_id;   9    commit;  10  end;  11  / Trigger created. SQL> BEGIN   2    INSERT INTO order_tab VALUES(102,SYSDATE,NULL,NULL,1001);   3    INSERT INTO order_tab VALUES(103,SYSDATE,NULL,NULL,1001);   4    INSERT INTO order_tab VALUES(103,SYSDATE,NULL,NULL,1001);   5  EXCEPTION WHEN DUP_VAL_ON_INDEX THEN   6    ROLLBACK;   7  END;   8  / PL/SQL procedure successfully completed. SQL> SQL> drop table order_tran_coming_in; Table dropped. SQL> SQL> drop table order_tab; Table dropped. SQL>