Pourquoi est-ce que je reçois une erreur en faisant une insertion quand IDENTITY_INSERT
est réglé sur OFF?
Comment l'activer correctement dans SQL Server 2008? Est-ce en utilisant SQL Server Management Studio?
J'ai lancé cette requête:
SET IDENTITY_INSERT Database. dbo. Baskets ON
Ensuite, j'ai reçu le message dans la console que la ou les commandes ont été exécutées avec succès. Cependant, lorsque j'exécute l'application, le message d'erreur ci-dessous s'affiche:
Cannot insert explicit value for identity column in table 'Baskets' when
IDENTITY_INSERT is set to OFF.
Via SQL selon MSDN
SET IDENTITY_INSERT sometableWithIdentity ON
INSERT sometableWithIdentity (IdentityColumn, col2, col3, ...)
VALUES (AnIdentityValue, col2value, col3value, ...)
SET IDENTITY_INSERT sometableWithIdentity OFF
Le message d'erreur complet vous dit exactement ce qui ne va pas ...
Impossible d'insérer une valeur explicite pour la colonne d'identité dans la table 'sometableWithIdentity' lorsque IDENTITY_INSERT est défini sur OFF.
J'ai eu un problème qui ne me permettait pas de l'insérer même après l'activation de IDENTITY_INSERT.
Le problème était que je n'avais pas spécifié les noms des colonnes et que, pour une raison quelconque, cela ne l'aimait pas.
INSERT INTO tbl Values(vals)
Donc, fondamentalement, faites le plein INSERT INTO tbl (cols) Values (vals)
Import: Vous devez écrire des colonnes dans l'instruction INSERT
INSERT INTO TABLE
SELECT * FROM
N'est pas correcte.
Insert into Table(Field1,...)
Select (Field1,...) from TABLE
Est correct
Je sais que c'est un fil plus ancien, mais je me suis heurté à cela. Si l'utilisateur tente d'exécuter des insertions dans la colonne Identity après une autre session, définissez IDENTITY_INSERT ON, il est alors lié à l'erreur ci-dessus.
La définition de la valeur Insertion d'identité et des commandes Insérer DML suivantes doit être exécutée par la même session.
Ici, @Beginner définissait Identity Insert sur séparément, puis exécutait les insertions à partir de son application. C'est pourquoi il a eu l'erreur ci-dessous:
Cannot insert explicit value for identity column in table 'Baskets' when
IDENTITY_INSERT is set to OFF.
Il ne semble pas nécessaire de mettre une base de données SET IDENTITY_INSERT. dbo. Paniers ON; avant chaque lot d'envoi SQL INSERT./Vous pouvez envoyer plusieurs commandes INSERT ... VALUES .. commencées avec un SET IDENTITY_INSERT ... ON; chaîne au début. Il suffit de ne mettre aucun séparateur de lot entre/je ne sais pas pourquoi SET IDENTITY_INSERT ... ON cesse de fonctionner après le bloc d'envoi (par exemple: .ExecuteNonQuery () dans c #) ... J'ai dû mettre SET IDENTITY_INSERT ... ON; à nouveau au début de la prochaine chaîne de commande SQL.
Cela est probable lorsque vous avez un champ PRIMARY KEY et que vous insérez une valeur en double ou que l'indicateur INSERT_IDENTITY est défini sur on