ID列を更新することはできません。
SQL Serverでは、updateステートメントを使用して他の列で実行できるのとは異なり、ID列を更新することはできません。
同様の種類の要件を達成するためのいくつかの選択肢がありますが。
- 新しいレコードのID列の値を更新する必要がある場合
テーブルの現在のID値をチェックし、必要に応じてID値を変更するDBCCCHECKIDENTを使用します。
DBCC CHECKIDENT('tableName', RESEED, NEW_RESEED_VALUE)
- 既存のレコードのID列の値を更新する必要がある場合
IDENTITY_INSERT を使用して、テーブルのID列に明示的な値を挿入できるようにします。
SET IDENTITY_INSERT YourTable {ON|OFF}
例:
-- Set Identity insert on so that value can be inserted into this column
SET IDENTITY_INSERT YourTable ON
GO
-- Insert the record which you want to update with new value in the identity column
INSERT INTO YourTable(IdentityCol, otherCol) VALUES(13,'myValue')
GO
-- Delete the old row of which you have inserted a copy (above) (make sure about FK's)
DELETE FROM YourTable WHERE ID=3
GO
--Now set the idenetity_insert OFF to back to the previous track
SET IDENTITY_INSERT YourTable OFF