Почему при вставке выдается ошибка при IDENTITY_INSERT
установке на OFF?
Как правильно включить его в SQL Server 2008? Это с помощью SQL Server Management Studio?
Я запустил этот запрос:
SET IDENTITY_INSERT Database. dbo. Baskets ON
Затем я получил в консоли сообщение о том, что команда (ы) успешно выполнена. Однако когда я запускаю приложение, оно все равно выдает ошибку, показанную ниже:
Cannot insert explicit value for identity column in table 'Baskets' when
IDENTITY_INSERT is set to OFF.
sql
sql-server-2008
начинающий
источник
источник
Ответы:
Через SQL согласно MSDN
Полное сообщение об ошибке говорит вам , что именно не так ...
источник
У меня была проблема, когда она не позволяла мне вставить его даже после установки IDENTITY_INSERT ON.
Проблема заключалась в том, что я не указывал имена столбцов и по какой-то причине он не понравился.
Таким образом, в основном делают полные значения INSERT INTO tbl (cols) (vals)
источник
Импорт: Вы должны написать столбцы в
INSERT
выпискеНе является правильным.
Верно
источник
Я знаю, что это старая ветка, но я наткнулся на это. Если пользователь пытается выполнить вставки в столбце Identity после некоторого другого сеанса. Установите IDENTITY_INSERT ON, тогда он обязательно получит вышеуказанную ошибку.
Установка значения вставки идентификатора и последующих команд вставки DML должны выполняться в одном сеансе.
Здесь @Beginner устанавливал Identity Insert ON отдельно и затем запускал вставки из своего приложения. Вот почему он получил следующую ошибку:
источник
Это вероятно, когда у вас есть поле PRIMARY KEY, и вы вставляете дублирующее значение, или у вас установлен флаг INSERT_IDENTITY на
источник
Похоже надо ставить
SET IDENTITY_INSERT Database.dbo.Baskets ON;
перед каждым SQLINSERT
отправкой пакета.Вы можете отправить несколько
INSERT ... VALUES ...
команд, начиная с однойSET IDENTITY_INSERT ... ON;
начинающихся строки в начале. Только не помещайте между собой сепаратор.Я не знаю, почему
SET IDENTITY_INSERT ... ON
перестает работать после блока отправки (например,.ExecuteNonQuery()
в C #). Мне пришлосьSET IDENTITY_INSERT ... ON;
снова поставить в начале следующей строки команды SQL.источник
Другой вариант - это когда у вас есть таблицы типа 'type' или 'status', например, OrderStatus, где вы всегда хотите контролировать значение Id, создавая столбец Id (первичный ключ), не будучи первым столбцом Identity.
источник
Вам нужно добавить команду 'go' после того, как вы установите идентификационную вставку. Пример:
источник