Db2将列更改为行更新时间戳

时间:2012-10-09 13:34:10

标签: sql db2 timestamp last-modified

在我的表中,我有一个类型为TIMESTAMP的MODIFIED列。 我希望在更新行时自动更新此列

我可以将它用于新列

alter table my_table add column last_updated timestamp not null
 generated by default for each row on update as row change timestamp 

但是我不能用它来编辑现有的列来自动进行更新

alter table my_table alter column modified set data type timestamp 
 not null generated by default for each row on update as row change timestamp

我是否正确使用了alter?

错误消息是

Error: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=alter table my_table alter column modified;BEGIN-OF-STATEMENT;<values>, DRIVER=3.50.152
SQLState:  42601
ErrorCode: -104

3 个答案:

答案 0 :(得分:1)

在这里找到一篇文章 http://ibmsystemsmag.blogs.com/db2utor/2008/01/automate-row-ch.html

基本上它说

  • 您无法使用ALTER TABLE语句转换列上的列 现有表使用as-row-change-timestamp子句。你必须 要么删除表并使用使用。定义的列重新创建 as-row-change-timestamp-clause或ALTER表并添加一个新的 带有as-row-change-timestamp-clause的列。

答案 1 :(得分:0)

一旦列存在,您将使用稍微不同的语法来更改数据类型和属性:

alter table my_table alter column my_column set generated by default ...

答案 2 :(得分:0)

您可以使用以下查询添加带有时间戳的新列。

ALTER TABLE TABLE_NAME
  add column UPDATED_DATE_TIME TIMESTAMP GENERATED ALWAYS FOR EACH ROW
  ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL;