#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. Пожалуйста, не размещайте ссылки на структуру таблиц или код. Опубликуйте оба в виде текста. Мы не можем ответить на вопросы о структуре таблицы или коде, не увидев структуру или код.