Можно ли сделать вставку по Id необязательной?

Я хочу иметь возможность вставлять что-то в мою таблицу с определенным идентификатором, поэтому я включил IDENTITY_INSERT для таблицы. Однако, если я просто хочу, чтобы автоинкремент обрабатывал идентификатор, появляется эта ошибка:

"Для столбца идентификаторов в таблице" TsiList "должно быть указано явное значение, если для IDENTITY_INSERT задано значение ON или когда пользователь репликации вставляет в столбец идентификаторов NOT FOR REPLICATION".

Есть ли способ сделать запросы

INSERT INTO table (ID, something_else) VALUES (15, 'foo'); 

а также

INSERT INTO table (something_else) VALUES ('foo'); 

работать одновременно?

1 ответ

Решение

Вы не можете сделать это без переключения identity_insert включается и выключается по мере необходимости между выполнением каждого запроса.

Каждая версия будет работать только тогда, когда identity_insert устанавливается на соответствующее значение в рамках сеанса, в котором выполняется запрос.

Например:

SET IDENTITY_INSERT TsiList ON;
INSERT INTO TsiList (ID, something_else) VALUES (15, 'foo'); 
SET IDENTITY_INSERT TsiList OFF;
INSERT INTO TsiList (something_else) VALUES ('foo');
Другие вопросы по тегам