You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Db2技术需求实现:当布尔列IS_SUBMITTED设为True时自动更新时间戳列TIME_SUBMITTED

当然可以实现!用Db2触发器轻松搞定你的需求

你的思路完全正确,Db2的触发器刚好能完美解决这种「当某列状态变更时自动关联更新另一列」的场景。作为Db2新手,我给你一步步拆解实现过程,代码都给你写好,放心用:

第一步:新增TIME_SUBMITTED列

先执行ALTER TABLE语句添加需要的时间戳列,默认值设为NULL:

ALTER TABLE 你的表名
ADD COLUMN TIME_SUBMITTED TIMESTAMP DEFAULT NULL;

记得把你的表名替换成你实际的表名称哦。

第二步:创建BEFORE UPDATE触发器

这个触发器会在更新IS_SUBMITTED列时触发,当它被设置为TRUE时,自动把TIME_SUBMITTED设为当前时间戳:

CREATE OR REPLACE TRIGGER TRG_UPDATE_SUBMIT_TIME
BEFORE UPDATE OF IS_SUBMITTED ON 你的表名
FOR EACH ROW
WHEN (NEW.IS_SUBMITTED = TRUE)
BEGIN
    SET NEW.TIME_SUBMITTED = CURRENT_TIMESTAMP;
END;

简单解释下代码逻辑:

  • CREATE OR REPLACE TRIGGER:创建(或替换已存在的)触发器,名字TRG_UPDATE_SUBMIT_TIME是自定义的,只要见名知意就行
  • BEFORE UPDATE OF IS_SUBMITTED:指定只在更新IS_SUBMITTED列时触发,避免不必要的性能消耗
  • FOR EACH ROW:对每一条被更新的行都执行触发器逻辑
  • WHEN (NEW.IS_SUBMITTED = TRUE):只有当更新后的IS_SUBMITTED值为TRUE时,才执行后续的时间戳更新操作
  • SET NEW.TIME_SUBMITTED = CURRENT_TIMESTAMP:把当前行的TIME_SUBMITTED字段设为Db2的当前系统时间戳

可选补充:处理插入时直接设为TRUE的场景

如果你的业务里存在「插入数据时就把IS_SUBMITTED设为TRUE」的情况,可以再创建一个INSERT触发器,自动填充时间戳:

CREATE OR REPLACE TRIGGER TRG_INSERT_SUBMIT_TIME
BEFORE INSERT ON 你的表名
FOR EACH ROW
WHEN (NEW.IS_SUBMITTED = TRUE)
BEGIN
    SET NEW.TIME_SUBMITTED = CURRENT_TIMESTAMP;
END;

测试验证

执行一条更新语句试试效果:

UPDATE 你的表名
SET IS_SUBMITTED = TRUE
WHERE 你的筛选条件;

之后查询对应行,就能看到TIME_SUBMITTED已经自动变成当前时间啦!

内容的提问来源于stack exchange,提问作者A. Lewis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 18:57:36