ORA-32796: не удается обновить сгенерированный столбец идентификаторов всегда

#database #oracle #vb.net

Вопрос:

Я конвертирую некоторый код из vb.net с 2008 по vb.net 2019 год. В своем коде я получил несколько предупреждений о том, что ссылка на Oracle, которую я использовал, устареет в будущих версиях, поэтому я переключился на Oracle.Ссылка на ManagedDataAccess.

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

ORA-32796: не удается обновить сгенерированный столбец идентификаторов всегда

Если я изменю свой запрос, чтобы он включал только поля, которые я хочу обновить, я получу эту ошибку:

Не удалось создать динамический SQL. Ключевая информация не найдена

Вторая ошибка имеет смысл, но не первая. Похоже, что-то в моей колонке идентификаторов не нравится новому коду. Я не эксперт по БД или что-то в этом роде, но я не уверен, как это исправить.

Ответ №1:

Похоже, столбец идентификатора таблицы был создан как

 id NUMBER GENERATED ALWAYS AS IDENTITY  ------  

Если бы это было

 id NUMBER GENERATED BY DEFAULT AS IDENTITY  ----------  

тогда вы, я полагаю, не поняли бы этой ошибки.


В любом случае: было бы полезно, если бы вы опубликовали CREATE TABLE , а также DML, который вы предварительно сформировали для этой таблицы.

Комментарии:

1. Почему я не получаю эту ошибку в другой версии моего кода?

2. Я действительно не знаю.

3. Вот ссылка на макет таблицы: i.imgur.com/KpwyqjL.png Поле идентификатора-это просто число, которое создается с помощью триггера. Я не рассматриваю «Всегда» как Личность, о которой вы говорили.

4. Пожалуйста, не размещайте ссылки на структуру таблиц или код. Опубликуйте оба в виде текста. Мы не можем ответить на вопросы о структуре таблицы или коде, не увидев структуру или код.