SQL Server で ID 列を更新するにはどうすればいいですか? 質問する

SQL Server で ID 列を更新するにはどうすればいいですか? 質問する

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

おすすめ記事