ORA-30926: Не удаётся получить стабильный набор строк в исходных таблицах
OracleЧто это значит?
В операторе MERGE (или обновляемом соединении) сторона источника выдала более одной совпадающей строки для одной и той же целевой строки. Oracle остановил операцию, поскольку не может решить, каким значением источника выполнять обновление.
Почему возникает?
Источник MERGE ... USING содержит дублирующиеся совпадения по условию ON; запрос-источник не уникален по целевому ключу; несколько строк источника сопоставляются одной целевой строке.
Как исправить
Сделайте запрос-источник уникальным по целевому ключу. Найдите дублирующиеся совпадения: SELECT key_col, COUNT(*) FROM (source_query) GROUP BY key_col HAVING COUNT(*) > 1; Устраните дубликаты в источнике с помощью DISTINCT или агрегатной/аналитической функции (ROW_NUMBER), затем повторите MERGE. Убедитесь, что условие ON достаточно селективно.
Ещё по этой СУБД
- ORA-04068Существующее состояние пакетов было сброшено
- ORA-01427Однострочный подзапрос возвращает более одной строки
- ORA-12899Значение слишком велико для столбца
- ORA-08103Объект больше не существует
- ORA-01843Недопустимый месяц
- ORA-14400Вставленный ключ секционирования не соответствует ни одной секции
- ORA-01536Превышена квота пространства для табличного пространства