Внезапно Oracle выдает ORA-00918: столбец неоднозначно определен

#sql #oracle #insert

#sql #Oracle #вставить

Вопрос:

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

 INSERT INTO test.test_log
(org_id,
 comany,
 file_id,
 data_dt,
 file_date,
 stat_cd,
 cre_by_nm,
 cre_ts)
SELECT 900,
       'CVS',
       1074,
       To_date('2020-11-11', 'yyyy-MM-dd'),
       To_date('2020-11-11', 'yyyy-MM-dd'),
       'pending',
       'Process',
       To_timestamp_tz('2020-11-12 06:35:10.0 -00:00',
                       'yyyy-MM-dd HH24:MI:SS.FF TZH:TZM')
FROM   dual
UNION ALL
SELECT 850,
       'WAl',
       1185,
       To_date('2020-11-11', 'yyyy-MM-dd'),
       To_date('2020-11-09', 'yyyy-MM-dd'),
       'pending',
       'Process',
       To_timestamp_tz('2020-11-12 06:35:10.0 -00:00',
                       'yyyy-MM-dd HH24:MI:SS.FF TZH:TZM')
FROM   dual
  

У меня есть решение этой проблемы, в инструкции select нам также нужно указать имя столбца. Но я не совсем понимаю, почему вдруг об этом заговорили.

Информация об ошибке

 Failed to insert the records
java.sql.SQLSyntaxErrorException: ORA-00918: column ambiguously defined
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
  

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

1. Я не могу воспроизвести это, и выбор выглядит нормально. Пожалуйста, укажите определение для вашей таблицы.

2. db<>fiddle также не может воспроизвести это.

3. Вы уверены, что это утверждение вызывает ошибку? Если это так, убедитесь, что вы проверили полное сообщение об ошибке, одним из возможных объяснений является срабатывание триггера, содержащего ошибку, полное сообщение об ошибке должно сделать это очевидным.

4. @TimBiegeleisen , MTO, Эндрю Сейер. Он работал нормально в течение нескольких месяцев, внезапно возникшая проблема. Мне нужно проконсультироваться с администратором базы данных относительно процесса обновления

5. Можем ли мы увидеть DBMS_METADATA.GET_DDL для test_log, а также ‘select * from all_triggers where имя_таблицы = ‘test_log’, а также, можете ли вы воспроизвести ошибку в SQLPlus, SQLcl или SQL Developer?