Требуется помощь при ошибке «Не удается вставить явное значение для столбца идентификаторов» - PullRequest
0 голосов
/ 25 января 2011

У меня есть таблица Table1, в которой я создал триггер вставки / обновления. Этот триггер вставляет записи о вставках / обновлениях в Table1 в Table1_history. Чтобы проверить, вставляет ли триггер записи в Table1_history, я вставил некоторые тестовые данные в Table1 и получаю сообщение об ошибке:

Cannot insert explicit value for identity column in table 'Table1_history' when IDENTITY_INSERT is set to OFF  

Схемы таблиц Table1 и Table1_history идентичны, за исключением дополнительного поля "вставлен_д__даты" в таблице Table1_history.

Я установил Identity Insert на ON, и триггер работает. Но я должен делать это каждый раз, когда мне нужно вставить новую запись в Таблицу 1?

Ответы [ 3 ]

3 голосов
/ 25 января 2011

Поместите IDENTITY INSERT ON в сам триггер, он должен быть активным, только когда вы помещаете значения в table1_history, потому что именно в этом проблема.

Или, в Table1_history, не делайтеполе pk IDENTITY, это необязательно, потому что вы вводите значения из таблицы 1.

2 голосов
/ 25 января 2011

Вы не упоминаете, какая база данных, но я предполагаю, что это SQL Server 2008.

Заданная идентификационная информация в команде зависит от сеанса. Так что да, вам нужно выдавать его каждый раз.

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

2 голосов
/ 25 января 2011

Я полагаю, что ваше поле 'insert_on_date' является датой и временем.Вы должны иметь возможность отключить вставку идентификатора и установить для этого столбца значение по умолчанию GETDATE(), которое будет устанавливать для всех вновь вставленных записей дату и время, которое сервер имеет при вставке записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...