插入后为当前时间戳更新创建触发器
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
我正在尝试通过以下方式创建存档。创建了我要存档的 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