如题,我建了一个行触发器(for each row)  遇到批量插入数据的时候好像只执行了一次,只插入一条。
这是为什么? 如果触发器抛异常的话,我怎么能看到?  谢啦!

解决方案 »

  1.   

    批量插入時行觸發器也是有多少行,執行多少次,只有語句級觸發器才執行一次還有如果觸發器出錯,直接就有錯拋出來,或你使用raise_application_error拋出自定義錯誤也可以
      

  2.   


    我的确实是行触发器,不过插入多条数据就只执行了一次,后台并没有出错! 
    再请教一下,如果我insert数据的时候是向一个表并发insert会有可能产生这种情况吗?
      

  3.   


    --不會,除非你insert觸發器時有不符合倏件不插入
    SQL> --創建表
    SQL> create table a(id int);
    SQL> create table b(id int);
    SQL> --創建觸發器
    SQL> create or replace trigger trg_abi
      2  before insert
      3  on a
      4  for each row
      5  begin
      6   insert into b values(:new.id);
      7  end;
      8  /
    SQL> --新增兩行
    SQL> insert into a select 1 from dual union select 2 from dual;
    SQL> --查看b表,兩行
    SQL> select * from b;        ID                                                                      
    ----------                                                                      
             1                                                                      
             2