我应用中有两个字段有对应关系
dxlb sfjr
31    是
32    否
现在:
当update insert dxlb
时sfjr中 是 否 
是我触发写入的
但是 这导致我 修改sfjr 保存不进去是否能根据表中的某个字段进行触发呢?
或者有什么更高明的方法望赐教!!  

解决方案 »

  1.   

    create or replace trigger trgname
    before insert or update of colname
    on tabname
    for each row
    begin
      if inserting then 
        if ... then :new.colname='xxx';
        end if;
      end if;
      if upd....end trgname;用行级before触发器
    直接对:new.sfjr值进行修改
      

  2.   

    用BEFORE UPDATE ON TABLE试试。
      

  3.   


    trigger只有表级和行级的,没有字段级别的但是行级trigger的强大功能,足可个满足你的需求,你建立before的trigger,这样就可以通过new和old的判断来实现你的功能,如果要修改值,只需要用:new.fieldname=xxxx的方式赋值就可以了,
    同时可以用:old.fieldname=XXXX来进行你的逻辑判断。
      

  4.   

    在行级触发器中可以对列的值进行访问(很重要!)
    列名前加   :old.    表示变化前的值
    列名前加   :new.    表示变化后的值
    在when子句中不用冒号。
      

  5.   

    楼主用哪个版本的oracle ?
    我记得oracle 9i一下的(包括9i)不能修改列名吧?
    别到时候瞎忙乎 呵呵