web-dev-qa-db-fra.com

Remplacez IDENTITY_INSERT par ON dans le serveur SQL

Comment puis-je insérer un ID dans une colonne d'identité dans SQL Server? Je vais faire un élément spécial dans ma table et je vais rapidement détecter cet élément par le ID. Donc, parce que tous les autres ID sont plus grands ou égaux à un, je donnerai à cet élément spécial l'ID zéro.

Le problème est maintenant, lorsque j'ai créé cette table, j'ai placé l'identité de l'ID de colonne sur true. Si j'insère maintenant l'élément spécial avec le code ci-dessous, j'ai la prochaine erreur:

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

Erreur:

Impossible d'insérer une valeur explicite pour la colonne d'identité dans la table MyTable lorsque IDENTITY_INSERT est défini sur OFF.

Comment puis-je modifier cette table, cette colonne ou cette propriété afin de pouvoir créer un enregistrement avec l'ID zéro?

6
H. Pauwelyn

L'insertion d'identité explicite requiert IDENTITY_INSERT propriété définie sur 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

UTILISATION SET IDENTITY_INSERT TABLEnAME ON

N'oubliez pas de désactiver l'identité et qu'une seule table peut avoir identité_insertion à la fois

4
Abdul Hannan Ijaz