SQL Server データベースがあり、ID 列を変更したいと考えています。ID 列は大きな数字で始まり10010
、別のテーブルに関連付けられているためです。現在、レコードは 200 件あり、レコードが増える前にこの問題を修正したいと考えています。
この列を変更またはリセットする最適な方法は何ですか?
ベストアンサー1
ID 列を更新することはできません。
SQL Server では、更新ステートメントを使用して他の列を更新できるのとは異なり、ID 列を更新することはできません。
ただし、同様の要件を満たす代替手段はいくつかあります。
- 新しいレコードのID列の値を更新する必要がある場合
使用DBCC チェックID テーブルの現在の ID 値をチェックし、必要に応じて ID 値を変更します。
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