0

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

我可以将其用于新列

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

我是否正确使用了改变?

错误信息是

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
4

3 回答 3

1

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

本质上它说

  • 您不能使用 ALTER TABLE 语句将现有表上的列转换为使用 as-row-change-timestamp-clause。您必须删除表并使用 as-row-change-timestamp-clause 定义的列重新创建,或者 ALTER 表并使用 as-row-change-timestamp-clause 添加一个新列。
于 2012-11-07T15:05:12.553 回答
1

您将能够在使用以下查询时添加带有时间戳的新列。

ALTER TABLE TABLE_NAME
  add column UPDATED_DATE_TIME TIMESTAMP GENERATED ALWAYS FOR EACH ROW
  ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL;
于 2015-07-27T15:07:07.023 回答
0

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

alter table my_table alter column my_column set generated by default ...
于 2012-10-10T11:37:43.437 回答