Pourquoi est-ce que j'obtiens une erreur lors de l'insertion lorsque 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 exécuté 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 se sont terminées avec succès. Cependant, lorsque j'exécute l'application, cela me donne toujours l'erreur indiquée ci-dessous:
Cannot insert explicit value for identity column in table 'Baskets' when
IDENTITY_INSERT is set to OFF.
sql
sql-server-2008
Débutant
la source
la source
Réponses:
Via SQL selon MSDN
Le message d'erreur complet vous indique exactement ce qui ne va pas ...
la source
J'ai eu un problème où il ne m'a pas permis de l'insérer même après avoir activé IDENTITY_INSERT.
Le problème était que je n'ai pas spécifié les noms des colonnes et pour une raison quelconque, il ne l'aimait pas.
Donc, fondamentalement, faites le plein INSERT INTO tbl (cols) Valeurs (vals)
la source
Importer: vous devez écrire des colonnes dans l'
INSERT
instructionN'est pas correcte.
Est correct
la source
Je sais que c'est un fil plus ancien mais je suis juste tombé dessus. Si l'utilisateur essaie d'exécuter des insertions sur la colonne Identité après une autre session Réglez IDENTITY_INSERT ON, alors il est lié pour obtenir l'erreur ci-dessus.
La définition de la valeur d'insertion d'identité et les commandes d'insertion DML suivantes doivent être exécutées par la même session.
Ici, @Beginner définissait Identity Insert ON séparément, puis exécutait les insertions à partir de son application. C'est pourquoi il a obtenu l'erreur ci-dessous:
la source
Cela est probable lorsque vous disposez d'un champ PRIMARY KEY et que vous insérez une valeur qui se duplique ou que l'indicateur INSERT_IDENTITY est défini sur on
la source
Il semble nécessaire de mettre un
SET IDENTITY_INSERT Database.dbo.Baskets ON;
avant chaqueINSERT
lot d'envoi SQL .Vous pouvez envoyer plusieurs
INSERT ... VALUES ...
commandes commencées par uneSET IDENTITY_INSERT ... ON;
chaîne au début. Ne mettez pas de séparateur de lots entre les deux.Je ne sais pas pourquoi les
SET IDENTITY_INSERT ... ON
arrêts de travail après le bloc d'envoi (par exemple:.ExecuteNonQuery()
en C #). J'ai dû mettre àSET IDENTITY_INSERT ... ON;
nouveau au début de la prochaine chaîne de commande SQL.la source
Une autre option est où vous avez des tables comme `` type '' ou `` état '', par exemple, OrderStatus, où vous voulez toujours contrôler la valeur Id, créez la colonne Id (clé primaire) sans que ce soit une colonne d'identité est la première place.
la source
Vous devez ajouter la commande «go» après avoir défini l'insertion d'identité. Exemple:
la source