Esistono sostanzialmente 2 modi diversi per INSERIRE i record senza avere un errore:
1) Quando IDENTITY_INSERT è impostato su OFF. L' ID " CHIAVE PRIMARIA " NON DEVE ESSERE PRESENTE
2) Quando IDENTITY_INSERT è impostato su ON. L' ID " CHIAVE PRIMARIA " DEVE ESSERE PRESENTE
Come nell'esempio seguente dalla stessa tabella creata con un IDENTITY PRIMARY KEY:
CREATE TABLE [dbo].[Persons] (
ID INT IDENTITY(1,1) PRIMARY KEY,
LastName VARCHAR(40) NOT NULL,
FirstName VARCHAR(40)
);
1) Nel primo esempio, è possibile inserire nuovi record nella tabella senza ottenere un errore quando IDENTITY_INSERT è OFF. La chiave primaria "ID" non devono essere presenti dal Bilancio "INSERT INTO" e un valore ID univoco verrà automaticamente aggiunto: . Se l'ID è presente da INSERT in questo caso, verrà visualizzato l'errore "Impossibile inserire il valore esplicito per identificare la colonna nella tabella ..."
SET IDENTITY_INSERT [dbo].[Persons] OFF;
INSERT INTO [dbo].[Persons] (FirstName,LastName)
VALUES ('JANE','DOE');
INSERT INTO Persons (FirstName,LastName)
VALUES ('JOE','BROWN');
OUTPUT di TABELLA [dbo]. [Persone] sarà:
ID LastName FirstName
1 DOE Jane
2 BROWN JOE
2) Nel secondo esempio, è possibile inserire nuovi record nella tabella senza ottenere un errore quando IDENTITY_INSERT è ON. L' ID " CHIAVE PRIMARIA " DEVE ESSERE PRESENTE dalle istruzioni "INSERT INTO" fintanto che il valore ID non esiste già : se in questo caso l'ID NON è presente da INSERT, verrà visualizzato l'errore "Il valore esplicito deve essere specificato per la tabella delle colonne di 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');
OUTPUT di TABELLA [dbo]. [Persone] sarà:
ID LastName FirstName
1 DOE Jane
2 BROWN JOE
3 BLACK JACK
5 WHITE JOHN