1. ホーム
  2. sql

[解決済み】SQL ServerでIdentityカラムを更新する方法は?

2022-02-19 01:52:02

質問

SQL Server データベースで、ID カラムを変更したいのですが、カラムの先頭が 大きな数字で 10010 現在、200件のレコードがあり、レコードが増える前にこの問題を解決したいです。

このカラムを変更またはリセットする最良の方法は何ですか?

解決方法は?

<ブロッククオート

IDカラムの更新ができません。

SQL Server は、他のカラムに対して update ステートメントでできることとは異なり、ID カラムを更新することを許可しません。

しかし、同じような要件を達成するための代替手段がいくつかあります。

  • 新しいレコードのためにIdentityカラムの値を更新する必要がある場合

使用方法 dbcc checkident これは、テーブルの現在の ID 値をチェックし、必要であれば ID 値を変更します。

DBCC CHECKIDENT('tableName', RESEED, NEW_RESEED_VALUE)

  • 既存レコードのIdentityカラムの値を更新する必要がある場合

使用方法 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