SQL帮助-检测指定值列表中的更改

  • 本文关键字:列表 帮助 SQL sql db2 db2-luw
  • 更新时间 :
  • 英文 :


我需要创建一个报告,返回其帐户类型已更改为account_types列表或从该列表更改的客户帐户:('CAM','camad','amhd','hamhdad','DIST','DISTADP','GAM','damp','LAM','amadp'(。

假设我今天有一张桌子:

customer_org_ID更新日期谷歌游戏Y
客户端 account_typeinsert_dateactive_Y_N
Netflix LAM C000002 2006-05-04 09:15:34 2021-09-04 08:35:34
NordstromCostco
波音公司 CAMHD
三星

尝试将mytab更改为真实的表名。

ALTER TABLE mytab ADD UPDATE_AT_DATE TIMESTAMP;
CREATE OR REPLACE TRIGGER mytab_BUR
BEFORE UPDATE OF ACCOUNT_TYPE ON mytab
REFERENCING NEW AS N OLD AS O
FOR EACH ROW
WHEN 
(
--     O.ACCOUNT_TYPE IS DISTINCT FROM N.ACCOUNT_TYPE
--  AND
--  (
O.ACCOUNT_TYPE IN ('CAM','CAMADP','CAMHD','CAMHDADP','DIST','DISTADP','GAM','GAMADP','LAM','LAMADP')
OR N.ACCOUNT_TYPE IN ('CAM','CAMADP','CAMHD','CAMHDADP','DIST','DISTADP','GAM','GAMADP','LAM','LAMADP')
--  )
)
SET N.UPDATE_AT_DATE = CURRENT TIMESTAMP 
;

如果您的应用程序可能会使用与现有值相同的值更新ACCOUNT_TYPE列,并且在这种情况下您不想更新新的UPDATE_AT_DATE列值,则可以取消注释注释行。

DB2的自由时态表特性,它是从版本10开始引入的。

不需要使用触发器,DB2可以自动管理

https://www.ibm.com/docs/en/db2/11.5?topic=tables-系统周期时间

https://philipkgunning.files.wordpress.com/2013/02/traveling-through-time-with-db2-time-travel-query3apr13.pdf