DB2 / 400 - 自动生成的更改时间戳(错误)

时间:2016-02-21 00:12:32

标签: sql database db2 db2-400

我正在尝试创建一个带有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'来解决触发问题。现在一切都按预期工作。谢谢大家!

0 个答案:

没有答案