DB2 表字段值变更记录
生活随笔
收集整理的這篇文章主要介紹了
DB2 表字段值变更记录
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DB2 表字段值變更記錄
需求描述:業務需要監控業務表中字段值變更情況,以便進行后續處理;
需求分析:使用觸發器方式實現
解決辦法:
-- 業務表: CREATE TABLE t(USERID INT, NAME VARCHAR (10), MANAUNITID VARCHAR (10));-- 日志表CREATE TABLE t_log(USERID INT, SOURCE_UNIT VARCHAR (10), TARGET_UNIT VARCHAR (10), CHANGE_TYPE INT);-- 觸發器 CREATE TRIGGER TR_T_UPDATE AFTER UPDATE OF MANAUNITID ON t REFERENCING OLD AS O NEW AS N FOR EACH ROW BEGIN ATOMICIF coalesce(o.MANAUNITID,'') != coalesce(n.MANAUNITID,'') THENINSERT INTO t_log (USERID, SOURCE_UNIT, TARGET_UNIT, CHANGE_TYPE)VALUES(N.USERID, O.MANAUNITID, N.MANAUNITID, 1);END IF; END;-- 功能測試 SELECT * FROM T; SELECT * FROM T_LOG;-- 寫入數據 INSERT INTO T VALUES(1,'hury','101'); INSERT INTO T VALUES(2,'lj','101');-- 更新非監控列,查看是否記錄日志 UPDATE t SET NAME = 'hury2' WHERE USERID = 1; -- 更新監控列,但值不變,查看是否記錄日志 UPDATE t SET MANAUNITID = '101' WHERE USERID = 1; -- 更新監控列,更新為新值,查看是否記錄日志 UPDATE t SET MANAUNITID = '102' WHERE USERID = 1;-- 空值測試 UPDATE t SET manaunitid = NULL WHERE userid = 2; UPDATE t SET manaunitid = '101' WHERE userid = 2;-- 清理測試表 DROP TRIGGER TR_T_UPDATE; DROP TABLE t; DROP TABLE t_log;總結
以上是生活随笔為你收集整理的DB2 表字段值变更记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git统计代码行数
- 下一篇: opencv之图像二值化处理