本人建立了一个表 create table gang(a varchar(100),b varchar(100));
现准备在gang表中实现,a赋给b的值.\
在SQL SERVER中是可在字段定义的公式中实现的.却不知在oracle中如何来实现此功能.

解决方案 »

  1.   

    create or replace trigger tr_gang  after insert or update of FLBH,fb_oid  on gang  
      for each row
    declare
        tg_flbh varchar(100);
    begin
      update gang set b=:new.a where a=:new.a;
    end tr_gang;
    可本人这样写却报错的,说什么
    表gang发生了变化,触发器/函数不能读它
      

  2.   

    create or replace trigger tr_gang
     before insert or update of FLBH,fb_oid on gang   
      for each row
    declare
      tg_flbh varchar(100);
    begin
      :new.b=:new.a ;
    end tr_gang;
      

  3.   


    --你的是触发了变异表事件
    --加自治事务不推荐
    create or replace trigger tr_gang after insert or update of FLBH,fb_oid on gang   
      for each row
    declare
      tg_flbh varchar(100);
    pragma autonomous_transaction;
    begin
      update gang set b=:new.a where a=:new.a;
    commit;
    end tr_gang;--
    create or replace trigger tr_gang after insert or update of FLBH,fb_oid on gang   
      for each row
    begin
    :new.b:=:new.a;
    end tr_gang;
      

  4.   

    create or replace trigger tg_arap_item_b
      after insert or update  of FLBH,FB_OID   on arap_item_b  
      for each row
    declare
      -- local variables here
      pragma autonomous_transaction;
    begin
      UPDATE ARAP_ITEM_B SET DDH=FLBH+1 WHERE FB_OID=:NEW.FB_OID;
      commit;
    end tg_arap_item_b;
    触发此触发器后却报 等待资源时检测到死锁
    这该如何处理?
      

  5.   

    贴下完整的表结构看看.光看trigger有点糊涂.
      

  6.   

    MiNITOY,您有没有QQ号呀?能加一下你吗?我的QQ为:14588854
      

  7.   

    SQL> create table t_test_tri
      2  (a number,
      3   b number);
     
    Table created
     
    SQL> 
    SQL> create or replace trigger tri_t_test_tri
      2    before insert or update on t_test_tri
      3    for each row
      4  declare
      5  begin
      6    :new.b:=:new.a;
      7  end tri_t_test_tri;
      8  /
     
    Trigger created
     
    SQL> insert into t_test_tri values(1,0);
     
    1 row inserted
     
    SQL> select * from t_test_tri;
     
             A          B
    ---------- ----------
             1          1
     
    SQL> update t_test_tri set a=2;
     
    1 row updated
     
    SQL> select * from t_test_tri;
     
             A          B
    ---------- ----------
             2          2
     
    SQL>
      

  8.   

    张工,可以了,谢你了,但我还是不知道:=是什么意思?,还有new前面一定要:号吗?
     :new.ddh:=:new.flbh ;
    对了,能否发个这方面帮助之类的东东给我?
    谢张工了.
      

  9.   

    new前的:是需要的. 
    其实最好的学习资料是oracle文档,可以到oracle网站下载一份,然后集成到plsql developer上.