CREATE TRIGGER TRI_NAME
AFTER INSERT 
ON TEMP
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW 
DECLARE 
  v_c2 TEMP3.C2%TYPE;
BEGIN
  SELECT c2 INTO v_c2 FROM TEMP2 WHERE C1 = :NEW.A1;
  INSERT INTO TEMP1 ( b,b1,b2) VALUES (:NEW.A, :NEW.A1, v_c2);
END;
/

解决方案 »

  1.   

    create or replace trigger test 
    after insert on temp
    for each row
    declare
    c temp2.c2%type;
    begin
    select c2 into c from temp2where :new.a1=temp2.c1;
    insert into temp1 (b,b1,b2) values (:new.a,:new.a1,c);
    end;
      

  2.   

    在temp的触发器中定义一个变量tmp,select temp2.c2 into temp from temp2 where temp2.c1 = :new.a1 然后再insert into temp1(b,b1,b2) valuse(:new.a,new.a1,tmp)
      

  3.   

    还是不可以,报语法错误,
    CREATE TRIGGER TRI_NAME
    AFTER INSERT 
    ON TEMP
    FOR EACH ROW 
    DECLARE 
      v_c2 TEMP3.C2 varchar2(10);
    BEGIN
      SELECT c2 INTO v_c2 FROM TEMP2 WHERE C1 = :NEW.A1;
      INSERT INTO TEMP1 ( b,b1,b2) VALUES (:NEW.A, :NEW.A1, v_c2);
    END;
    还是语法错误,大家帮忙再看看
      

  4.   

    DECLARE 
      v_c2 TEMP3.C2 varchar2(10);  --这一句错了。应该是v_c2 TEMP3.C2%TYPE; 或者 v_c2 varchar2(10);  
    BEGIN