Maison >base de données >tutoriel mysql >Pourquoi ne puis-je pas insérer une valeur dans une colonne d'identité et comment y remédier ?
Dépannage de l'erreur « Impossible d'insérer une valeur explicite pour la colonne d'identité »
Lorsque vous essayez d'insérer manuellement une valeur dans une colonne d'identité (une colonne attribuée automatiquement à des valeurs séquentielles uniques par la base de données), vous rencontrerez l'erreur "Impossible d'insérer une valeur explicite pour la colonne d'identité dans la table 'table' lorsque IDENTITY_INSERT est réglé sur OFF." Cela se produit parce que les colonnes d'identité sont conçues pour gérer elles-mêmes leurs valeurs.
La solution : activer temporairement IDENTITY_INSERT
La solution consiste à activer temporairement IDENTITY_INSERT
pour la table spécifique. Ce paramètre remplace la génération automatique de valeurs. Voici le processus :
IDENTITY_INSERT
: Utilisez la commande SQL suivante en remplaçant TableName
par le nom de votre table :<code class="language-sql">SET IDENTITY_INSERT TableName ON</code>
INSERT
avec la valeur explicite de la colonne d'identité. Par exemple :<code class="language-sql">INSERT INTO TableName (IdentityColumnName, Column2, Column3) VALUES (100, 'Some Value', 'Another Value');</code>
IDENTITY_INSERT
: Surtout, après l'insertion, désactivez IDENTITY_INSERT
pour restaurer le comportement automatique de la colonne d'identité :<code class="language-sql">SET IDENTITY_INSERT TableName OFF</code>
Exemple illustratif :
Considérons une table Orders
avec une colonne d'identité OrderID
. Pour insérer un enregistrement avec un OrderID
spécifique, procédez comme suit :
<code class="language-sql">SET IDENTITY_INSERT Orders ON; INSERT INTO Orders (OrderID, CustomerID, OrderDate) VALUES (12345, 1, '2024-03-08'); SET IDENTITY_INSERT Orders OFF;</code>
Cela permet d'insérer la valeur 12345
dans la colonne OrderID
. N'oubliez pas de toujours désactiver IDENTITY_INSERT
après votre insertion pour maintenir l'intégrité de votre colonne d'identité.
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!