在orecal 中 怎样把刚删除的一条数据备份到另一个字段一样的备份表中呢? 我的思路是用触发器,,可是不懂的orecal 的语法~~,请高手们指点一二~~感激不尽!!!

解决方案 »

  1.   

     
    create or replace trigger UserToTemp after insert or update or delete
    on user_info for each row
    declare
        integrity_error exception;
        errno integer;
        errmsg char(200);
        dummy integer;
        found boolean; 
    begin
    if inserting then
        insert into User_info_temp(ID,UserName,PassWord,CreateDate,Status) values(:NEW.ID,:NEW.UserName,:NEW.PassWord,:new.CreateDate,:NEW.Status);
    elsif updating then 
        update User_info_temp set ID=:NEW.ID,UserName=:NEW.UserName,PassWord=:NEW.PassWord,Status=:NEW.Status where id=:OLD.id;
    elsif deleting then
        delete from User_info_temp where id=:OLD.id;
    end if;
    exception
        when integrity_error then
           raise_application_error(errno, errmsg);
    end;
      

  2.   

    create trigger trig after delete on tabfor each row
    begin
    insert into tab_bak values(:old.id,old.name....);
    commit;end;
      

  3.   

    可以把备份与删除写到一个事务里面
    begin
    insert into 备份表 select * from 源表 where....;
    delete from 源表 where ....;
    end;