Il existe essentiellement 2 façons différentes d'INSERER des enregistrements sans avoir d'erreur:
1) Lorsque IDENTITY_INSERT est réglé sur OFF. La clé primaire ID " " NE DOIT PAS ÊTRE PRÉSENT
2) Lorsque IDENTITY_INSERT est défini sur ON. La clé primaire ID DOIT ÊTRE PRÉSENT
Comme dans l'exemple suivant de la même table créée avec une CLÉ PRIMAIRE D'IDENTITÉ:
CREATE TABLE [dbo].[Persons] (
ID INT IDENTITY(1,1) PRIMARY KEY,
LastName VARCHAR(40) NOT NULL,
FirstName VARCHAR(40)
);
1) Dans le premier exemple, vous pouvez insérer de nouveaux enregistrements dans la table sans obtenir d'erreur lorsque IDENTITY_INSERT est désactivé. La clé primaire « ID » NE DOIT PAS ÊTRE PRÉSENT des déclarations « INSERT INTO » et une valeur d'identification unique sera automatiquement ajouté: . Si l'ID est présent dans INSERT dans ce cas, vous obtiendrez l'erreur "Impossible d'insérer une valeur explicite pour identifier la colonne dans le tableau ..."
SET IDENTITY_INSERT [dbo].[Persons] OFF;
INSERT INTO [dbo].[Persons] (FirstName,LastName)
VALUES ('JANE','DOE');
INSERT INTO Persons (FirstName,LastName)
VALUES ('JOE','BROWN');
SORTIE du TABLEAU [dbo]. [Personnes] seront:
ID LastName FirstName
1 DOE Jane
2 BROWN JOE
2) Dans le deuxième exemple, vous pouvez insérer de nouveaux enregistrements dans la table sans obtenir d'erreur lorsque IDENTITY_INSERT est activé. L' ID " PRIMARY KEY " DOIT ÊTRE PRÉSENT à partir des instructions "INSERT INTO" tant que la valeur ID n'existe pas déjà : si l'ID n'est PAS présent dans INSERT dans ce cas, vous obtiendrez l'erreur "La valeur explicite doit être spécifié pour la table des colonnes d'identité ... "
SET IDENTITY_INSERT [dbo].[Persons] ON;
INSERT INTO [dbo].[Persons] (ID,FirstName,LastName)
VALUES (5,'JOHN','WHITE');
INSERT INTO [dbo].[Persons] (ID,FirstName,LastName)
VALUES (3,'JACK','BLACK');
SORTIE du TABLEAU [dbo]. [Personnes] seront:
ID LastName FirstName
1 DOE Jane
2 BROWN JOE
3 BLACK JACK
5 WHITE JOHN