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
Libérer: 2025-01-19 09:12:10
original
691 Les gens l'ont consulté

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>
Copier après la connexion
  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>
Copier après la connexion
  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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal