web-dev-qa-db-ja.com

SQLサーバーでIDENTITY_INSERTをONに変更します。

SQL ServerのID列にIDを挿入するにはどうすればよいですか?テーブルに特別なアイテムを作成し、IDによってそのアイテムをすばやく検出します。他のすべてのIDは1以上であるため、その特別なアイテムにはIDゼロを指定します。

問題は、テーブルを作成したときに、列IDのIDをtrueに設定したことです。以下のコードを含む特別なアイテムを挿入すると、次のエラーが発生します。

INSERT INTO MyTable(ID, Name, Description) 
VALUES (0, 'Special title', 'special item');

エラー:

IDENTITY_INSERTMyTableに設定されている場合、テーブルOFFのID列に明示的な値を挿入できません。

このテーブル、列、またはプロパティを変更して、IDがゼロのレコードを作成するにはどうすればよいですか?

6
H. Pauwelyn

明示的なIDの挿入には、IDENTITY_INSERTプロパティをONに設定する必要があります。

SET IDENTITY_INSERT MyTable ON  -- Statement Allows explicit values to be inserted into 
                                -- the identity column of a table.
GO

INSERT INTO MyTable(ID, Name, Description) 
VALUES (0, 'Special title', 'special item');
GO

SET IDENTITY_INSERT MyTable OFF  -- Statement revert granted permission
GO
14
AA.SC

使用する SET IDENTITY_INSERT TABLEnAME ON

IDをオフにすることを忘れないでください。identity_insertを同時にオンにできるのは1つのテーブルだけです。

4