DBAtlas · Атлас эксплуатации баз данных

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 достаточно селективно.

Открыть в DBAtlas →

Ещё по этой СУБД