sql - 插入后为当前时间戳更新创建触发器

标签 sql db2 database-trigger

我正在尝试通过以下方式创建存档。创建了我要从中存档的表的副本,并添加了一个名为 DATA_PERIOD 的列。我的想法是创建一个触发器,在用原始表中的数据插入该表后,DATA_PERIOD 将更新为 current_timestamp。这是我写的代码。

CREATE TRIGGER ORDERS_SUMMARY_ARCHIVE
AFTER INSERT ON GDTS.ORDERS_SUMMARY_A
FOR EACH ROW
WHEN (DATA_PERIOD IS NULL)
UPDATE GDTS.ORDERS_SUMMARY_A SET DATA_PERIOD = CURRENT_TIMESTAMP

所以当表被填充时,时间戳被插入。

不确定是否有更好的方法来做到这一点。我在一本知识书中找到了这个陈述,并试图根据我的需要对其进行调整,但没有成功。

"DATA_PERIOD" is not valid in the context where it is used.. SQLCODE=-206, SQLSTATE=42703, DRIVER=3.68.61

我是否需要某种对条件表的引用?

谢谢

最佳答案

我认为您需要一个 before 插入触发器。如果我的 DB2 语法正确:

CREATE TRIGGER ORDERS_SUMMARY_ARCHIVE BEFORE INSERT ON GDTS.ORDERS_SUMMARY_A
FOR EACH ROW WHEN (DATA_PERIOD IS NULL)
    SET DATA_PERIOD = CURRENT_TIMESTAMP;

关于sql - 插入后为当前时间戳更新创建触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51199975/

相关文章:

mysql - 审计跟踪表的触发器

c# - SQL:按日期分组

java - 我应该在 java 中导入什么来为 db2 和 tomcat 执行连接池

database - 数据库连接自动重连

oracle - 是否可以在 Insert as select 语句上返回主键 - Oracle?

mysql - 我可以有一个使用不同表参数的触发器吗?

sql - 使用 postgres db 进行适当的索引

sql - mysql 查询以查找表列中每一个非 ascii 字符的出现并将其替换为 HTML 等价物

mysql - 在 SELECT 查询中表达公式

在 Windows 7 中启动 db2sampl 时出现 sql1205n