2012-03-01 8 views
2

に主キーを移動します。今度は別の自動インクリメント列ID BIGINTを作成し、終了プライマリキー制約をドロップし、作成した列IDをプライマリキーとして作成します。DB2は、私はテーブルを持っている別の列

データを失うことなくこれを行うにはどうすればいいですか?

確かに私は一時テーブルを使用できますが、正しい方法を見つけようとします。

答えて

3
ALTER TABLE A DROP PRIMARY KEY; 

ALTER TABLE A ADD COLUMN ID BIGINT NOT NULL WITH DEFAULT 0; 

ALTER TABLE A ALTER COLUMN ID SET GENERATED ALWAYS AS IDENTITY(START WITH 1, INCREMENT BY 1); 

REORG TABLE A; 

UPDATE TABLE A SET ID = DEFAULT; 

ALTER TABLE A ADD PRIMARY KEY (ID); 
+1

を働いた;'私にエラーが発生しました:エラー:予期しないトークン "IDENTITY" は、以下の発見されました"として"。 "" .. SQLCODE = -104、SQLSTATE = 42601、DRIVER = 4.8.86 SQLState:42601 ErrorCode:-104 – coms

+0

@comsこのスレッドを見て修正したバージョンを試してください。http: //www.dbforums.com/db2/1650358-adding-identity-column-existing-table.html –

+1

行のエラー: 'ALTER TABLE A ALTER COLUMN IDは常にIDとして生成されます(1で始まり、INCREMENT BY 1)。 'エラー:ALTER TABLE" DB2ADMIN.A "は、既存の列と互換性のない" ID "列の属性を指定しています。SQLCODE = -190、SQLSTATE = 42837、DRIVER = 4.8.86 SQLState:42837 ErrorCode:-190 – coms

関連する問題