先说说我的情况,我有两张表一张叫A另一个叫B,我现在在A表中添加了一个字段c,而该字段的值是从B表中取得的.想用触发器去完成.(A,B现在有一个共同的字段C_ID)
有那位朋友知道该怎么去写该触发器的代码吗?
只要一旦运行正确就马上给分,在线等待!

解决方案 »

  1.   

    CREATE OR REPLACE TRIGGER TEST BEFORE INSERT ON "A" FOR EACH ROW
    DECLARE
    BEGIN  
      SELECT B.C INTO :NEW.C FROM B WHERE B.C_ID=:NEW.C_ID;
    END;
      

  2.   

    恩不对啊我在oracle数据库里把你写的放进出创建的时候提示:
    索引中丢失in或out参数::1
    请继续帮助!
      

  3.   

    只是临时补充一下这个字段的内容,那么写个批量更新的SQL语句不就可以了吗?为什么还要用触发器??如果考虑今后A表中查入的数据那么就用这个就可以的
    SQL> create table a (c_id number(8),c varchar2(10),primary key(c_id));表已创建。SQL> create table b (c_id number(8),c varchar2(10),primary key(c_id));表已创建。SQL> insert into a values(1,'111');已创建 1 行。SQL> insert into b values(2,'222');已创建 1 行。SQL> insert into b values(3,'333');已创建 1 行。SQL> commit;提交完成。SQL> CREATE OR REPLACE TRIGGER TEST BEFORE INSERT ON "A" FOR EACH ROW
      2  DECLARE
      3  BEGIN
      4    SELECT B.C INTO :NEW.C FROM B WHERE B.C_ID=:NEW.C_ID;
      5  END;
      6  /触发器已创建SQL> select * from a;      C_ID C                                                                    
    ---------- ----------                                                           
             1 111                                                                  SQL> select * from b;      C_ID C                                                                    
    ---------- ----------                                                           
             2 222                                                                  
             3 333                                                                  SQL> insert into a(c_id) values(2);已创建 1 行。SQL> commit;提交完成。SQL> select * from b;      C_ID C                                                                    
    ---------- ----------                                                           
             2 222                                                                  
             3 333                                                                  SQL> spool off;
      

  4.   

    SQL> select * from a;      C_ID C
    ---------- ----------
             1 111
             2 222
      

  5.   

    批量更新A表中新字段的内容
     update a set a.c=(select b.c from b where b.c_id=a.c_id);