0

私のテーブルには、タイプ 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

オルターを正しく使用していますか?

エラーメッセージは

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 に答える