能否在我执行插入操作后trigger触发update本表的记录

来源:百度文库 编辑:神马文学网 时间:2024/04/29 15:50:41
在Oracle 11g中,借助compound trigger,可以轻松的解决类似的问题,比如:

Connected to Oracle Database 11g Enterprise Edition Release 11.1.0.6.0
Connected as study

SQL>
SQL> create table zrp (no int);

Table created

SQL> create or replace trigger trig_comp_zrp
  2  for insert on zrp
  3  compound trigger
  4  
  5    v_no number;
  6  
  7    after each row is
  8    begin
  9       v_no:=:new.no;
10    end after each row;
11  
12    after statement is
13    begin
14        update zrp set no=v_no+100 where no=v_no;
15    end after statement;
16  end;
17  /

Trigger created

SQL> select * from zrp;

                                     NO
---------------------------------------

SQL> insert into zrp values(1);

1 row inserted

SQL> select * from zrp;

                                     NO
---------------------------------------
                                    101

SQL> insert into zrp values(2);

1 row inserted

SQL> select * from zrp;

                                     NO
---------------------------------------
                                    101
                                    102
SQL> insert into zrp values(3);

1 row inserted

SQL> select * from zrp;

                                     NO
---------------------------------------
                                    101
                                    102
                                    103
SQL> commit;

Commit complete

SQL> select * from zrp;
                                     NO
---------------------------------------
                                    101
                                    102
                                    103
SQL>