Dépannage de l'erreur « Impossible d'insérer une valeur explicite pour la colonne d'identité » dans SQL Server
Vous rencontrez l'erreur « Impossible d'insérer une valeur explicite pour la colonne d'identité dans la table 'table' lorsque IDENTITY_INSERT est défini sur OFF » dans SQL Server ? Cela se produit généralement lorsque vous tentez d'insérer manuellement une valeur dans une colonne désignée pour l'auto-incrémentation. Les colonnes d'identité génèrent automatiquement des valeurs séquentielles pour chaque nouvelle ligne et, par défaut, IDENTITY_INSERT
est défini sur OFF
, empêchant l'insertion directe de valeurs.
Voici comment résoudre ce problème :
Méthode 1 : Activer temporairement IDENTITY_INSERT
Cette méthode permet d'insérer une valeur spécifique dans la colonne identité, mais seulement temporairement.
<code class="language-sql">SET IDENTITY_INSERT Table1 ON INSERT INTO Table1 (OperationID, OpDescription, FilterID) --Column list is mandatory VALUES (20, 'Hierarchy Update', 1); SET IDENTITY_INSERT Table1 OFF</code>
Méthode 2 : Supprimer la contrainte d'identité
Si vous n'avez pas besoin d'auto-incrémentation pour cette colonne, supprimez la contrainte d'identité. Remarque : Cela désactive définitivement l'incrémentation automatique.
<code class="language-sql">ALTER TABLE Table1 DROP CONSTRAINT IDENTITY_Constraint;</code>
Après cette modification, vous pouvez insérer des valeurs directement dans la colonne. Cependant, n'oubliez pas que vous devrez spécifier manuellement des valeurs pour chaque insertion de ligne ultérieure. Une réflexion approfondie est nécessaire avant d'opter pour cette méthode.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!