Ошибка возникает, когда пользователь установил для параметра «identity_insert» значение «OFF». Затем пытается явно вставить данные в столбец первичного ключа таблицы. Это можно объяснить на примере ниже.
Сначала создайте базу данных с именем «appuals».
Создайте таблицу с именем «person», используя следующий код. Созданная таблица с использованием «PRIMARY KEY IDENTITY»
Тогда как первый аргумент – это имя базы данных, в которой расположена таблица. Второй аргумент, который показывает , – это схема, к которой принадлежит эта таблица, для которой необходимо установить значение идентификатора ON или OFF . Третий аргумент
– это таблица со столбцом идентификаторов.
Существует два основных способа безошибочной вставки данных в таблицу. Они рассматриваются как решение этой ошибки и обсуждаются ниже.
Ошибка 1: установите identity_insert OFF
В первом случае мы вставим данные в таблицу с «IDENTITY INSERT» , установленным на «OFF» . Таким образом, если идентификатор присутствует в операторе INSERT, вы получите ошибку «Невозможно вставить явное значение для столбца идентификаторов в таблицу ‘person’, когда для IDENTITY_INSERT установлено значение OFF».
Выполните следующий код на вкладке запроса.
отключите identity_insert person; вставить в значения person (ID, first_name, last_name) (3, 'Sadia', 'Majeed'), (4, 'Michel', 'Ronald')
Результат будет таким.
Решение:
При выключении « IDENTITY INSERT OFF » « PRIMARY KEY ID » НЕ ДОЛЖЕН ПРИСУТСТВОВАТЬ в операторе вставки
Теперь выполните следующий код на вкладке запроса
выключите identity_insert person; вставить в значения person (first_name, last_name) ('Sadia', 'Majeed'), ('Michel', 'Ronald')
Это вставит данные в таблицу без ошибок. Более того, ПЕРВИЧНЫЙ КЛЮЧ ID не требуется вводить пользователем, скорее, он автоматически добавит уникальное значение ID, как показано на рисунке ниже.
Ошибка 2: Установите identity_insert ON
Во втором случае мы будем вставлять данные в таблицу с «IDENTITY INSERT» , установленным на «ON» . Таким образом, если идентификатор не указан в операторе INSERT, вы получите сообщение об ошибке «», сообщение 545, уровень 16, состояние 1, строка 17. Для столбца идентификаторов в таблице «person» необходимо указать явное значение. либо когда для IDENTITY_INSERT установлено значение ON, либо когда пользователь репликации вставляет данные в столбец идентификаторов NOT FOR REPLICATION ».
Решение:
При включении « IDENTITY INSERT ON » « PRIMARY KEY ID » должен присутствовать в операторе вставки.
Выполните следующий код на вкладке запроса
установите identity_insert person; вставить в значения person (ID, first_name, last_name) (5, 'Jack', 'black'), (6, 'john', 'Wicky')
Это вставит данные в таблицу без ошибок. Таким образом, ИДЕНТИФИКАТОР ПЕРВИЧНОГО КЛЮЧА явно должен быть вставлен пользователем. Кроме того, он не будет автоматически добавлять значение уникального идентификатора, как показано на рисунке ниже.
Если вы « SET IDENTITY INSERT ON» , он останется включенным для всю сессию. Таким образом, вы можете добавить столько записей, сколько захотите, как только это будет установлено. Это также относится только к сеансу, в котором он включен. Поэтому, если вы откроете другую вкладку запроса, вам нужно снова включить ее ON для этого окна запроса.