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