CREATE OR REPLACE TRIGGER "user1"."col1_col2"
 AFTER   UPDATE
    ON "user1"."tab1" 
    FOR EACH ROW 
  begin
    update tab1
    set col3=:old.innum-:old.outnum where sid=:old.sid;
 end

解决方案 »

  1.   

    gaobh(^_^) :
    可不可以在建数据库的时候通过指定defualt (col1-col2)来实现?
      

  2.   

    不可以,本人已测试过,若实现同步,只能用触发器替代.
    create procedure insert_pro(p_col1 in varchar2,p_col2 in varchar2)
    as
    num number;
    begin
    num:=p_col1+p_col2;
    insert into tab1 (col3) values (num);
    end;
    /
    create procedure update_pro(p_sid in varchar2)
    as
    begin
    update tab1 set col3=col1+col2 where sid=p_sid;
    end;
    /
    CREATE OR REPLACE TRIGGER col1_col2
     AFTER  insert or UPDATE  ON tab1 
        FOR EACH ROW 
      begin
       if inserting then
        insert_pro(:new.col1,:new.col2);
       else
        update_pro(:old.sid);
       end if;
    end;
    /