表T1(C1,C2,C3),表T2(C1,C2,C3,c3,c4……)
触发器要求:
当对表T1新增一条记录时,调用触发器,将该记录插入T2;
当对表T1中的一条记录进行修改是,调用触发器,修改入T2中对应的记录;
当对表T1删除一条记录时,同时将T2中对应的记录也删除。
这样的触发器怎么写?
谢谢!

解决方案 »

  1.   

    create or replace trigger tr 
    after update or delete or insert 
    on t1
    for each row
    begin
    if inserting then
    insert into t2(C1,C2,C3) values(:new.C1,:new.C3,:new.C3);
    elsif updating then
    insert into t2(C1,C2,C3) values(:old.C1,:old.C3,:old.C3);
    elsif deleting then
    insert into t2(C1,C2,C3) values(:old.C1,:old.C3,:old.C3);
    end if;
    end;
      

  2.   

    CREATE OR REPLACE TRIGGER TEST BEFORE INSERT OR DELETE OR UPDATE ON T1
    FOR EACH ROW
    BEGIN
       IF INSERTING THEN 
        INSERT INTO T2 VALUES(:NEW.C1,:NEW.C2,:NEW.C3); ELSIF UPDATING THEN
        UPDATE T2 SET T2.C1=:NEW.C1,T2.C2=:NEW.C2,T2.C3=:NEW.C3 WHERE T2.C1=:OLD.C1 AND T2.C2=:OLD.C2 AND T2.C3=:OLD.C3; ELSIF DELETING THEN
        DELETE  FROM T2 WHERE T2.C1=:NEW.C1;
       END IF; 
        
    END;
    建议T1,T2表用设C1为主键,然后再UPDATE和DELETE操作中使用主键对T1,T2表进行关联
      

  3.   

    T1修改对应T2修改,T1删除对应T2也删除
      

  4.   

    假设t1表的c1是主键;create or replace trigger tr 
    after update or delete or insert 
    on t1 
    for each row 
    begin 
    if inserting then 
    insert into t2(C1,C2,C3) values(:new.C1,:new.C3,:new.C3); 
    elsif updating then 
    update t2 set c2:=old.c2,c3=:old.c3
    where c1=:old.c1;
    elsif deleting then 
    delete t2 where c1=:old.c1;
    end if; 
    end;
      

  5.   

    ORA-04098: trigger 'SRAPP_SJCK.T1_TRIGGER' is invalid and failed re-validation
    测试后出现上面的错误
      

  6.   

    原来有地方错了,更正一下,update t2 set c2=:old.c2,c3=:old.c3 
      

  7.   


    insert into t2(C1,C2) values(case when :new.C1 is '1' then 'True' else 'False' end,case when :new.C2 is 'a' then 'a' else 'b' end); 要实现这样的功能,该怎么写?