如果update了tableaaa中lastday这个字段的话,不执行插入操作。就是说对update要分3中情况update了account字段的值为1,插入新记录到另一个表--已解决
update了lastday的值,不执行任何操作
其它update操作,插入新记录到另一个表--已解决
CREATE OR REPLACE TRIGGER TR_DML_tableaaa
AFTER INSERT OR UPDATE ON tableaaa
FOR EACH ROW
BEGIN
IF INSERTING THEN
 INSERT INTO HANDLELOG values (TO_NUMBER(to_cha(SYSDATE,'yyyymmddhh)),'Other','AAAA-01-0001','添加用户操作成功【'||:new.ACCOUNT||'】',0);
ELSIF UPDATING THEN
 IF (:new.USER_STATUS=2) THEN
   INSERT INTO HANDLELOG values (TO_NUMBER(to_cha(SYSDATE,'yyyymmddhh)),'Other','AAAA-01-0003','删除用户操作成功',0);
 ELSE
   INSERT INTO HANDLELOG values (TO_NUMBER(to_cha(SYSDATE,'yyyymmddhh)),'Other','AAAA-01-0002','修改用户基本信息操作成功【'||:new.ACCOUNT||'】',0);
 END IF;
END IF;
END;

解决方案 »

  1.   

    行级触发器的关联标识符  :old  :new    old是原值记录指针,new是新的
    用这两个变量判断字段变化.
      

  2.   

    你指的不执行操作是指原来的tableaaa 中的这条记录不允许修改?  还是说触发器不执行
    如果这条记录不允许修改, 那就自定义个异常出来
    如果只是触发器不执行  
    那你就 if :new.lastday= :old.lastday then
    这边执行你的修改
    elsif :new.lastday!=:old.lastday then
    ---这边不写语句就可以了
    end if;