我正在尝试通过以下方式创建档案。创建了我要从中存档的表的副本,并添加了一个名为DATA_PERIOD的列。我的想法是创建一个触发器,在此表中插入原始表中的数据后,将使用current_timestamp更新DATA_PERIOD。这是我编写的代码。
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”在使用上下文中无效。SQLCODE = -206,SQLSTATE = 42703,DRIVER = 3.68.61
在这种情况下我需要某种形式的对表的引用吗?
谢谢
答案 0 :(得分:1)
我认为您想要一个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;
答案 1 :(得分:1)
按照Gordon Linoff的建议在插入触发器之前使用。新记录的引用变量应在触发器标题部分中定义。
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