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
Libérer: 2025-01-09 08:57:41
original
821 Les gens l'ont consulté

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

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

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!

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