比如我有一张表a ,我想建两张同样结构的表b,c,其中insert如a的时候插入b ,delete a时,插入c,怎么写啊?谢谢了

解决方案 »

  1.   

    create or replace trigger 触发器名字
      before insert on 表名字  
      for each row
    declare
      -- local variables here
    begin
      select 序列名字.nextval into :new.contactid from dual;//触发后要处理的语句
    end 触发器名字;
      

  2.   

    create or replace trigger triggername
      before insert or delete on A  
      for each row
    begin
      if inserting then
          insert into B select * from A where id = :new.id;
      end if;
      if deleting then
          insert into C select * from A where id = :old.id;
      end if;
    end triggername;
      

  3.   

    UPC05070000大哥,我把你的语句增加到触发器中了,没有报错,但我用程序添加或删除记录的时候没有插入相应的记录到B、C表中啊
    另外 id = :old.id;这个语句
    如果我A中的主键是mail_id的话
    那是不是改成Mail_id=:old.Mail_id啊?
      

  4.   

    大哥,我试了一下,这个的插入可以实现,但是删除实现不了,大家帮帮我
    create or replace trigger tri_mail_send
      after insert or delete on mail_send
      for each row
    begin
      if inserting then
      insert into mail_send_add (mail_id,mail_from_id,mail_to_id,mail_content,mail_send_time,read_flag,garbage_flag,download_url,mail_title,file_name,need_response) 
      values(:new.mail_id,:new.mail_from_id,:new.mail_to_id,:new.mail_content,:new.mail_send_time,:new.read_flag,:new.garbage_flag,:new.download_url,:new.mail_title,:new.file_name,:new.need_response);
      end if;
      if deleting then
      insert into mail_send_delete(mail_id,mail_from_id,mail_to_id,mail_content,mail_send_time,read_flag,garbage_flag,download_url,mail_title,file_name,need_response)
      values(:old.mail_id,:old.mail_from_id,:old.mail_to_id,:old.mail_content,:old.mail_send_time,:old.read_flag,:old.garbage_flag,:old.download_url,:old.mail_title,:old.file_name,:old.need_response);
      end if;
    end tri_mail_send;