Comment réparer l'erreur «Impossible d'insérer une valeur explicite pour la colonne d'identité dans la table lorsque IDENTITY_INSERT est défini sur OFF»?

La colonne de clé primaire est souvent définie sur l'incrémentation automatique lors de la construction d'une base de données SQL Server. La limite IDENTITY est activée pour la colonne de clé primaire pour ce faire. L'emplacement de départ et l'étape d'incrémentation sont transférés dans la colonne IDENTITY en tant que paramètres. Ensuite, chaque fois qu'un nouvel enregistrement est ajouté et que l'insertion d'identité est définie sur OFF, la valeur de la colonne IDENTITY est augmentée de l'étape prédéfinie normalement un nombre. De plus, la propriété IDENTITY INSERT est définie sur ON uniquement pour une table dans une seule session.

Dans cet article, nous aborderons l'erreur «Impossible d'insérer une valeur explicite pour la colonne d'identité dans la table

lorsque IDENTITY_INSERT est défini sur OFF "

L'erreur survient lorsque l'utilisateur a défini «identity_insert» sur «OFF». Essaie ensuite d'insérer explicitement des données dans la colonne de clé primaire de la table. Cela peut être expliqué à l'aide de l'exemple ci-dessous.

Création de bases de données et de tables:

Tout d'abord, créez une base de données nommée «appuals».

Créez une table nommée «personne» à l'aide du code suivant. Table construite à l'aide d'une  "IDENTITÉ DE CLÉ PRIMAIRE"

CREATE TABLE personne (ID INT IDENTITY (1, 1), prénom VARCHAR (MAX), nom VARCHAR (MAX))

Syntaxe pour définir «identity_insert off | sur":

Le "set identity_insert off | on ” nous aidera à résoudre cette erreur. La syntaxe correcte pour cette instruction est la suivante.

SET IDENTITY_INSERT. .
comme indiqué ci-dessous.

Alors que le premier argument est le nom de la base de données dans laquelle se trouve la table. Le deuxième argument montre le schéma auquel appartient cette table dont la valeur d'identité doit être définie sur ON ou OFF . Le troisième argument

SUR

Il existe fondamentalement deux manières différentes d'insérer des données dans la table sans erreur. Ceux-ci sont considérés comme la solution à cette erreur et sont décrits ci-dessous.

Erreur 1: définissez identity_insert sur OFF

Dans le premier cas, nous insérerons des données dans le tableau avec «IDENTITY INSERT» réglé sur «OFF» . Ainsi, si l'ID est présent dans l'instruction INSERT, vous obtiendrez l'erreur «Impossible d'insérer une valeur explicite pour la colonne d'identité dans la table 'personne' lorsque IDENTITY_INSERT est défini sur OFF».

Exécutez le code suivant dans l'onglet de requête.

désactiver la personne identity_insert; insérer dans la personne (ID, prénom, nom) les valeurs (3, 'Sadia', 'Majeed'), (4, 'Michel', 'Ronald')

La sortie sera comme ça.

Solution:

Lorsque vous désactivez  «IDENTITY INSERT OFF»«PRIMARY KEY ID»  NE DOIT PAS être PRESENT dans l'instruction d'insertion

Maintenant, exécutez le code suivant dans l'onglet de requête

désactiver la personne identity_insert; insérer dans la personne (prénom, nom) les valeurs ('Sadia', 'Majeed'), ('Michel', 'Ronald')

Cela insérera des données dans la table sans erreur. De plus, il n'est pas nécessaire que l'utilisateur insère l'identifiant de clé primaire, mais il ajoutera automatiquement une valeur d'identifiant unique, comme le montre la figure ci-dessous.

Erreur 2: définissez identity_insert sur ON

Dans le second cas, nous insérerons des données dans le tableau avec «IDENTITY INSERT» réglé sur «ON» . Donc, si l'ID n'est pas présent dans l'instruction INSERT, vous obtiendrez l'erreur ”Msg 545, niveau 16, état 1, ligne 17. La valeur explicite doit être spécifiée pour la colonne d'identité dans la table 'personne' soit lorsque IDENTITY_INSERT est défini sur ON ou lorsqu'un utilisateur de réplication s'insère dans une colonne d'identité NOT FOR REPLICATION ».

Solution:

Lors de la  mise « IDENTITÉ INSERT ON » la « PRIMARY KEY  ID » doit être présent dans l'instruction d'insertion.

Exécutez le code suivant dans l'onglet de requête

mettre la personne identity_insert sur; insérer dans la personne (ID, prénom, nom) les valeurs (5, 'Jack', 'black'), (6, 'john', 'Wicky')

Cela insérera des données dans la table sans erreur. Ainsi, l' ID PRIMARY KEY doit être explicitement inséré par l'utilisateur. De plus, il n'ajoutera pas automatiquement de valeur d'identifiant unique comme le montre la figure ci-dessous.

Si vous « SET IDENTITY INSERT ON» , il restera activé pendant toute la session. Ainsi, vous pouvez ajouter autant d'enregistrements que vous le souhaitez une fois que cela a été défini. Cela fait également référence uniquement à la session où il est activé. Donc, si vous ouvrez un autre onglet de requête, vous devez le réactiver pour cette fenêtre de requête.





est la table avec la colonne d'identité. #####