Описание тега identity-insert
ʻIDENTITY_INSERT` - это опция базы данных Sql Server, которая позволяет явно указывать значения для столбца идентификаторов в таблице во время операции вставки.
При использовании свойства Identity для столбца в базе данных Sql значения для столбца затем назначаются сервером Sql, и назначенное значение может быть возвращено с помощьюSCOPE_IDENTITY()
или похожие.
Однако в определенных условиях может потребоваться подавить автоматическое поведение свойства идентификации в столбце и вместо этого предоставить для столбца значение, указанное пользователем.
В SET IDENTITY_INSERT
для этого можно использовать опцию.
Пример:
create table MyTable
(
id int identity(1,1) NOT NULL,
name nvarchar(50) NOT NULL
);
В нормальных условиях с IDENTITY_INSERT
off, значения для столбца идентификаторов нельзя указать вручную:
SET IDENTITY_INSERT MyTable OFF; -- Which is the Default
insert into MyTable(name) values ('Andrew');
-- 1 row(s) affected
insert into MyTable(id, name) values (5, 'Andrew');
-- Cannot insert explicit value for identity column in table 'MyTable' when IDENTITY_INSERT is set to OFF.
Включив IDENTITY_INSERT
, значения для id
Должно быть предоставлено
SET IDENTITY_INSERT MyTable ON;
insert into MyTable(id, name) values (6, 'Charles');
-- 1 row(s) affected
insert into MyTable(name) values ('Dan');
-- Explicit value must be specified for identity column in table 'MyTable' either when IDENTITY_INSERT is set to ON or when a replication user is inserting into a NOT FOR REPLICATION identity column.
Ссылки
- Идентификация MSDN (свойство) http://msdn.microsoft.com/en-us/library/ms186775.aspx