我正在尝试创建一个带有timestamp列的表,该列在每次更新记录时自动生成“当前时间戳”。我使用ODBC驱动程序在DB2 / 400(版本V5R3)上。
这是查询:
CREATE TABLE random_table_name (
ID integer not null generated always as identity,
USERS_ID varchar (30),
DETAILS varchar (1000),
TMSTML_CREATE timestamp default current timestamp ,
TMSTMP_UPDATE timestamp not null generated always for each row on update as row change timestamp,
PRIMARY KEY ( ID )
)
我收到此错误(已翻译):
ERROR [42000] [IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0104 - Token EACH not valid. Valid tokens: BIT SBCS MIXED.
如果没有'TMSTMP_UPDATE'行,则查询有效。我该如何解决这个问题?
编辑:好的,我明白在我的DB2版本中,唯一的方法是使用触发器,但今天AS400似乎对我来说是邪恶的。 我正在尝试这个:
CREATE TRIGGER random_trigger_name
AFTER UPDATE ON random_table_name
REFERENCING NEW AS NEW_ROW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW_ROW.TMSTM_UPDATE = CURRENT TIMESTAMP;
END
错误(已翻译):
ERROR [42000] [IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0312 - Variable TMSTM_UPDATE not defined or not available.
列TMSTM_UPDATE存在且它是正常时间戳。
编辑2:我通过将'after'替换为'before'来解决触发问题。现在一切都按预期工作。谢谢大家!