有两个表一个案件 case 另一个分配表 gar
case 中有提交人,提交时间,接收人三个字段
gar 中有提交人,接收人2个字段想做的触发器是 当case表中有新记录时,根据提交人把case表中的接收人更新为gar表中相应的接收人。请各位达人 指教。

解决方案 »

  1.   

     楼主以后提问,先给测试数据 create table case (id number , name varchar2(10),dt date);
     create table gar (id number , name varchar2(10));
     insert into gar values(1,'test1');
     insert into gar values(2,'test2');
     insert into gar values(3,'test3');
     create or replace trigger trigger_name
     before insert on case
     for each row
     declare
       pragma autonomous_transaction;
       v_name varchar2(10);
     begin
          select name into v_name from gar where id=:new.id;
          :new.name:=v_name;
          commit;
     exception when NO_DATA_FOUND THEN
          null;
     end;
     SQL> insert into case values(3,'xxxxx',sysdate);1 row insertedSQL>  insert into case values(4,'xxxxx',sysdate);1 row insertedSQL> select * from case;        ID NAME       DT
    ---------- ---------- -----------
             3 test3      2010-6-12 1
             4 xxxxx      2010-6-12 1SQL> 
      

  2.   


    --最好是给出表结构以及记录语句
    SQL> create table case (提交人 varchar2(10), 接收人 varchar2(10),
      2  提交时间 date)
      3  /表已创建。SQL> edi
    已写入 file afiedt.buf  1* create table gar (提交人 varchar2(10), 接收人 varchar2(10))
    SQL> /表已创建。SQL> insert into gar values('1','test1');已创建 1 行。SQL> insert into gar values('2','test2');已创建 1 行。SQL> insert into gar values('3','test3');已创建 1 行。
    SQL> select * from gar;提交人     接收人
    ---------- ----------
    1          test1
    2          test2
    3          test3
    已写入 file afiedt.buf  1  create or replace trigger tri_gar before update or insert on case for each row
      2  begin
      3  update gar set 接收人=:new.接收人
      4  where 提交人=:new.提交人;
      5* end;
    SQL> /触发器已创建SQL> insert into case values('2','wkc168',sysdate);已创建 1 行。SQL> select * from gar;提交人     接收人
    ---------- ----------
    1          test1
    2          wkc168
    3          test3