呵呵,我说详细点,我的行级触发器就是想监控该表的记录是否被insert,update,delete 并且把每一字段更新的新值记录下来,我如何知道那个字段发生更新,哪些没有更新?是否只能一个个字段用:NEW.fieldValue和:OLD.fieldValue来比较?有没有更快的方法??

解决方案 »

  1.   

    首先insert触发器没有:old,所返的值是空
    其次delete触发器没有:new,所返回的是null
    那只能在update触发器作比较
    create trigger name_tri 
    before update on table_name
    for each row
    begin
    if :NEW.fieldValue 与:OLD.fieldValue作比较
    ....
      

  2.   

    对于update好像只能一个个字段的去比较了?没有一下子定位的办法....?
      

  3.   

    "把每一字段更新的新值记录下来",那么说你保留了上次的新值或者说旧值了?那你是不是可以在插入监控语句的时候加上where 监控表.fieldvalue<>:new.fieldvalue的条件,这样若未更新,就不会多插入一条记录.
      

  4.   

    好象只能通过:new 和:old 比较