如果在同一张表中我想同时限制不能修改2个字段应该怎么写啊?
比如
create or replace trigger tr_test
before update of username,date on t_user
referencing old o new n for each row
declarebegin
  
end;begin 里面该怎么写呢?
总不会限制2个字段需要写2个触发器吧,那样太麻烦了

解决方案 »

  1.   

      :n.username := :o.username;
      :n.date := :o.date;
      

  2.   

    username和date字段不会更新,其他字段的更新照常
      

  3.   

    username和date字段不会更新,其他字段的更新照常
    [/Quote]不是啊,我想要提示信息啊··,比如说raise_application_error(-20001,'用户名不能修改')
      

  4.   

    怎样才能正确的提示信息呢,
    比如用户如果只想修改用户名我就给他提示用户名不能修改,
    如果想修改日期我就能正确的提示出  日期不能修改怎么样才能正确用if语句执行这两条语句呢raise_application_error(-20001,'用户名不能修改')
    raise_application_error(-20002,'注册日期不能修改');
      

  5.   

    终于解决了 ,真确的写法我贴上来可
    create or replace trigger tr_test
    before update on t_user
    for each row
    declarebegin
      dbms_output.put_line(:new.username);
      dbms_output.put_line(:new.userage);
       if :new.username != :old.username then
         raise_application_error(-20001,'用户名不能修改');
       end if;
       if :new.userage != :old.userage then
         raise_application_error(-20002,'用户年龄不能修改');
       end if;
    end;