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

Create trigger after insert for current timestamp update

我正在尝试通过以下方式创建存档。创建了我要存档的 table 的副本,并添加了一个名为 DATA_PERIOD 的列。我的想法是创建一个触发器,在用原始 table 中的数据插入此 table 之后,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

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

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

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

我需要某种对条件中 table 的引用吗?

谢谢

我想你想要一个 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;

按照 Gordon Linoff 的建议在插入触发器之前使用。新记录的引用变量应在触发器 header 部分中定义。

CREATE TRIGGER ORDERS_SUMMARY_ARCHIVE BEFORE INSERT ON GDTS.ORDERS_SUMMARY_A REFERENCING NEW AS N FOR EACH ROW WHEN (N.DATA_PERIOD IS NULL) BEGIN ATOMIC SET N.DATA_PERIOD = CURRENT_TIMESTAMP; END