create or replace trigger find_in
after insert on a
for each row
begin
insert into b values (:new.id,:new.name);
end;
/

解决方案 »

  1.   

    求助:为什么我的这个触发器中的:old,:new不起作用? 
    表TMP 和 TMP1 中有字段caseid,而且有很多相同的值
    更新表TMP的时候,找表TMP1中caseid相同的 并更新其name字段;
    看看这个触发器:
    CREATE OR REPLACE TRIGGER TRIGGER1
    AFTER UPDATE ON TMP
    REFERENCING OLD AS OLD NEW AS NEW 
    FOR EACH ROW
    BEGIN
     update tmp1 set name=:new.name where caseid=:old.caseid;
    END;
    update tmp的时候没什么效果(update 的那条caseid 的值在两个表都一样)
    如果不要where caseid=:old.caseid就可以更新,当然不符合要求,
    似乎找不到caseid相同的数据,但是我查看了的确有很多一样的
    怎么办?是不是有什么约束啊?
      

  2.   

    你在UPDATE TMP表的时候有没有给WHERE caseid=?呢?
      

  3.   

    :NEW :OLD只能对修改后的值有效
      

  4.   

    是不是caseid的值最后有空格? 类型char 和varchar2
      

  5.   

    CREATE OR REPLACE TRIGGER TRIGGER1
    before UPDATE ON TMP
    REFERENCING OLD AS OLD NEW AS NEW 
    FOR EACH ROW
    BEGIN
     update tmp1 set name=:new.name where caseid=:old.caseid;
    exception
     when others then
     raise_application_error(-20000,'更新不成功');
    END;
    /