Istnieją zasadniczo 2 różne sposoby WSTAWIANIA rekordów bez błędu:
1) Gdy IDENTITY_INSERT jest ustawiony na OFF. KLUCZ PODSTAWOWY „ID” NIE MOŻE BYĆ OBECNY
2) Gdy IDENTITY_INSERT jest włączony. KLUCZ PODSTAWOWY „ID” MUSI BYĆ OBECNY
Zgodnie z poniższym przykładem z tej samej tabeli utworzonej przy użyciu klucza podstawowego tożsamości:
CREATE TABLE [dbo].[Persons] (
ID INT IDENTITY(1,1) PRIMARY KEY,
LastName VARCHAR(40) NOT NULL,
FirstName VARCHAR(40)
);
1) W pierwszym przykładzie możesz wstawić nowe rekordy do tabeli bez wyświetlania błędu, gdy IDENTITY_INSERT jest WYŁĄCZONY. Klucz podstawowy „ID” nie może być obecny ze sprawozdania „insert into” i unikalna wartość ID zostanie dodany automatycznie: . Jeśli w tym przypadku jest obecny identyfikator z INSERT, pojawi się błąd „Nie można wstawić wyraźnej wartości dla kolumny identyfikacyjnej w tabeli ...”
SET IDENTITY_INSERT [dbo].[Persons] OFF;
INSERT INTO [dbo].[Persons] (FirstName,LastName)
VALUES ('JANE','DOE');
INSERT INTO Persons (FirstName,LastName)
VALUES ('JOE','BROWN');
WYNIK TABELI [dbo]. [Osoby] to:
ID LastName FirstName
1 DOE Jane
2 BROWN JOE
2) W drugim przykładzie możesz wstawić nowe rekordy do tabeli bez wyświetlania błędu, gdy IDENTITY_INSERT jest włączony. KLUCZ PODSTAWOWY „ID” MUSI BYĆ OBECNY w instrukcjach „INSERT INTO”, o ile wartość ID jeszcze nie istnieje : Jeśli w tym przypadku identyfikator NIE jest obecny w INSERT, pojawi się błąd „Wartość jawna musi być określono dla tabeli kolumn tożsamości ... ”
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');
WYNIK TABELI [dbo]. [Osoby] to:
ID LastName FirstName
1 DOE Jane
2 BROWN JOE
3 BLACK JACK
5 WHITE JOHN