Существует два основных способа вставки записей без ошибок:
1) Когда IDENTITY_INSERT выключен. ПЕРВИЧНЫЙ КЛЮЧ «ИД» НЕ ДОЛЖЕН БЫТЬ НАСТОЯЩИМ
2) Когда IDENTITY_INSERT включен. ПЕРВИЧНЫЙ КЛЮЧ "ID" ДОЛЖЕН БЫТЬ НАСТОЯЩИМ
Согласно следующему примеру из той же таблицы, созданной с ИДЕНТИЧНЫМ КЛЮЧОМ::
CREATE TABLE [dbo].[Persons] (
ID INT IDENTITY(1,1) PRIMARY KEY,
LastName VARCHAR(40) NOT NULL,
FirstName VARCHAR(40)
);
1) В первом примере вы можете вставить новые записи в таблицу, не получая ошибки, когда IDENTITY_INSERT выключен. ПЕРВИЧНЫЙ КЛЮЧ «ID» НЕ ДОЛЖЕН БЫТЬ ПРЕДСТАВЛЕН * из операторов «INSERT INTO» , и уникальное значение ID будет добавлено автоматически: . Если в этом случае присутствует идентификатор из INSERT, вы получите сообщение об ошибке «Невозможно вставить явное значение для столбца идентификации в таблице ...»
SET IDENTITY_INSERT [dbo].[Persons] OFF;
INSERT INTO [dbo].[Persons] (FirstName,LastName)
VALUES ('JANE','DOE');
INSERT INTO Persons (FirstName,LastName)
VALUES ('JOE','BROWN');
ВЫХОД ТАБЛИЦЫ [dbo]. [Персон.] Будет:
ID LastName FirstName
1 DOE Jane
2 BROWN JOE
2) Во втором примере вы можете вставить новые записи в таблицу, не получая ошибки, когда IDENTITY_INSERT включен. ПЕРВИЧНЫЙ КЛЮЧ "ID" ДОЛЖЕН БЫТЬ ПРЕДСТАВЛЕН * из операторов "INSERT INTO" , пока значение идентификатора еще не существует : если идентификатор не присутствует в INSERT в этом В этом случае вы получите сообщение об ошибке «Необходимо указать явное значение для таблицы столбцов идентификаторов ...»
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');
ВЫХОД ТАБЛИЦЫ [dbo]. [Персон.] Будет:
ID LastName FirstName
1 DOE Jane
2 BROWN JOE
3 BLACK JACK
5 WHITE JOHN