我要实习的功能是当一张table中插入一条id的记录之后用一个触发器把id对应的详细信息从别的table中插入到插入id的table中
,我自己写了个trigger,没有成功,高手指点一下:
create or replace trigger Test 
  after insert on test  
  for each row
declare  -- local variables herebegin
 update test set(test.test_id,test.name,test.email,test.phone)= (select t.test_id,t.name,t.email,t.phone from sourcetable t where t.test_id=:new test.test_id )
  
end Test Insert;

解决方案 »

  1.   

    ID是主键,还有别的栏位,但是不影响,就是不知道怎么样让他插入记录的时候把更多的信息从别的表中link过来
      

  2.   

    create or replace trigger Test
      before insert on test
      for each row
    begin
      select t.name, t.email, t.phone
        into :new.name, :new.email, :new.phone
        from sourcetable t
       where t.test_id = :new test.test_id;
    end Test;
      

  3.   

    老大,为什么在我的机器上跑不起来啊,New哪里报错,什么原因啊??
    TRIGGER SCOTT.TEST 编译错误错误:PLS-00049: 错误的赋值变量 'NEW'
    行:8
    文本:where t.test_id =:new test.test_id;错误:PL/SQL: ORA-00933: SQL 命令未正确结束
    行:8
    文本:where t.test_id =:new test.test_id;错误:PL/SQL: SQL Statement ignored
    行:5
    文本:select t.name, t.email, t.phone
      

  4.   

    楼上的正解!
    测试通过!create or replace trigger Test
      before insert on test1
      for each row
    begin
      select t.name, t.email, t.phone
        into :new.name, :new.email, :new.phone
        from sourcetable t
       where t.test_id = :new test1.test_id;
    end Test1;
      

  5.   

    create or replace trigger Test
      before insert on test
      for each row
    begin
      select t.name, t.email, t.phone
        into :new.name, :new.email, :new.phone
        from sourcetable t
       where t.test_id = :new.test_id;
    end Test;
    自己也检查下吗。我替换过去写错了点
      

  6.   

    where t.test_id =:new test.test_id;將紅色的部分去掉!