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 :
<tablename>
par le nom de votre table :<code class="language-sql">SET IDENTITY_INSERT <tablename> ON;</code>
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!