2012-10-20

[DB2][SQL]CREATE時は普通の数値項目だけど、途中から値を自動採番するようにしたい


DB2ではGENERATED ALWAYS AS IDENTITYを使って自動採番ができる。
ALTER TABLEで普通に変更したらいいじゃない、と思ってやってみたら「矛盾している」とか怒られた。
DECIMALDECIMALでも、NOT NULL default 0DECIMALでないと、ALTER TABLEGENERATED ALWAYS AS IDENTITYにはできないみたい。
途中で自動採番に切り替える予定なら、以下のようにテーブルを作ってやれば問題なくALTER TABLEできる。

CREATE TABLE TEST ( ID DECIMAL(11) NOT NULL default 0, PRIMARY KEY (ID))

ALTER TABLE TEST ALTER IDSET DATA TYPE DECIMAL(11) NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)

下記のサイトを参考にしました。
        既存の表に自動更新列(自動的に数値が+1される列)を追加するには


0 件のコメント:

コメントを投稿