update触发器应该是表中数据发生变化的产生的事件,如果数据未更新成功,肯定不会产生触发器事件,你可以试试违反表中主键的设置情况下看看会怎样.

解决方案 »

  1.   

    SQL> select * from a;未选定行SQL> select * from ta;        ID NAME                N
    ---------- ---------- ----------
             1 aaa                 1
             2 bbb                 1SQL> create or replace trigger trg_ta_update
      2  before update on ta
      3  for each row
      4  begin
      5  insert into a values(:new.id);
      6  end;
      7  /触发器已创建SQL> update ta set name='aab' where id=1;已更新 1 行。SQL> select * from a;        AA
    ----------
             1SQL> rollback;重算已完成。SQL> select * from a;未选定行SQL> 这样的问题自己操作一下就清楚了
      

  2.   

    触发器内部使用DML语句时,触发器也被看过是事务的一部分,ROLLBACK对触发器有效
      

  3.   

    声明一点:我的意思不是说触发器里的DML不能恢复,而是怎么样使它根本就不触发!
    因为我的触发器里是调用一个JAVA方法,而该方法不是对数据库进行操作,而是其他动作,如发出一个RMI调用。调用一旦发出,就不能像数据库一样ROLLBACK了。
    我这样解释清楚了吗?
    谢谢大家!
      

  4.   

    你在觸發器中寫這樣的條件語句試一下﹕If updated Then   //相應的操作End IfIf updating Then   //相應的操作End If
      

  5.   

    觸發器是事務的一部份﹐它不能在 commit 后再觸發。要么你用 program來實現。
      

  6.   

    哪可在触发器加条件,if... then do else no do end if;
    就是了