Oracle中用觸發器實現自動記錄表數據被修改的歷史信息


oracle中用觸發器實現自動記錄表數據被修改的歷史信息

有一些比較重要的表字段每次修改需要做歷史記錄,以后可以查詢這個表中某些字段如何被修改過。由什么改成了什么等,由誰操作,操作時間等。

 實例:1.首先創建一個成績表

 

2.然后創建一個成績修改日志表

 

 3.針對成績表寫一個觸發器,在這里只寫筆試成績和面試成績的修改觸發,各位開發人員可根據自己需要添加修改觸發器

 --面試成績,以及筆試成績修改記錄觸發器
create or replace trigger "TR_EXAM_SCORE_UPDATE"
before update on exam_score
for each row

begin
     
      if :old.facescore<>:new.facescore then
          insert into exam_scorelog values(seq_exam_scorelog.nextval,:old.examid,:old.studentid,:old.jobid,:old.courseid,'facescore','面試成績', :old.facescore,:new.facescore,:new.createuser,sysdate);
      end if;
      if :old.writerscore<>:new.writerscore then
          insert into exam_scorelog values(seq_exam_scorelog.nextval,:old.examid,:old.studentid,:old.jobid,:old.courseid,'writerscore','筆試成績', :old.writerscore,:new.writerscore,:new.createuser,sysdate);
      end if;
end;

 

4.這樣我們在頁面上修改考生的筆試或者面試成績都會自動記錄到日志表中。

查詢修改日志表:

5.這樣我們在知道考生id后就可以查到此考生的成績修改記錄,誰修改的,原值是多少,修改后的值是多少,操作時間

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM