Maison >base de données >tutoriel mysql >Comment activer et désactiver IDENTITY_INSERT dans SQL Server 2008 pour les insertions de colonnes d'identité contrôlées ?

Comment activer et désactiver IDENTITY_INSERT dans SQL Server 2008 pour les insertions de colonnes d'identité contrôlées ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-09 08:57:41842parcourir

How to Enable and Disable IDENTITY_INSERT in SQL Server 2008 for Controlled Identity Column Insertions?

SQL Server 2008 : Gestion des insertions de colonnes d'identité à l'aide de IDENTITY_INSERT

Dans les bases de données SQL Server, des situations surviennent dans lesquelles vous devez insérer manuellement des valeurs dans les colonnes d'identité. Cependant, IDENTITY_INSERT est désactivé par défaut, empêchant l'insertion directe.

Comprendre l'erreur IDENTITY_INSERT OFF

Tenter d'insérer une valeur dans une colonne d'identité avec IDENTITY_INSERT défini sur OFF entraîne cette erreur :

Impossible d'insérer une valeur explicite pour la colonne d'identité dans la table 'TableName' lorsque IDENTITY_INSERT est défini sur OFF.

En effet, SQL Server gère automatiquement les valeurs d'identité uniques. Lorsque IDENTITY_INSERT est désactivé, la base de données s'attend à ce que la colonne d'identité soit vide, ce qui lui permet d'attribuer la valeur séquentielle suivante.

Activation IDENTITY_INSERT à l'aide de SQL Server Management Studio (SSMS)

Pour activer IDENTITY_INSERT pour une table spécifique dans SSMS :

  1. Cliquez avec le bouton droit sur la base de données contenant la table cible.
  2. Choisissez "Nouvelle requête".
  3. Exécutez la commande T-SQL suivante, en remplaçant <tablename> par le nom de votre table :
<code class="language-sql">SET IDENTITY_INSERT <tablename> ON;</code>
  1. Après l'exécution, insérez vos données. Pensez à désactiver IDENTITY_INSERT par la suite.

Utiliser directement T-SQL

Vous pouvez également gérer IDENTITY_INSERT directement dans T-SQL :

<code class="language-sql">SET IDENTITY_INSERT sometableWithIdentity ON;

INSERT INTO sometableWithIdentity (IdentityColumn, col2, col3, ...)
VALUES (AnIdentityValue, col2value, col3value, ...);

SET IDENTITY_INSERT sometableWithIdentity OFF;</code>

Messages d'erreur détaillés

Les messages d'erreur préciseront la table affectée, facilitant ainsi l'identification du problème. Par exemple :

<code>Cannot insert explicit value for identity column in table 'Baskets' when IDENTITY_INSERT is set to OFF.</code>

En activant temporairement IDENTITY_INSERT, vous contrôlez les valeurs de la colonne d'identité. Désactivez-le toujours par la suite pour maintenir l'intégrité de la base de données et la génération séquentielle 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