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 ?

Pourquoi ne puis-je pas insérer une valeur dans une colonne d'identité et comment y remédier ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-19 09:12:10688parcourir

Why Can't I Insert a Value into an Identity Column, and How Do I Fix It?

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 :

  1. Activer 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>
  1. Effectuez INSERT : Vous pouvez maintenant exécuter votre instruction 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>
  1. Désactiver 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn