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>