Oracle объединяется в операторы, которые не работают должным образом - PullRequest
0 голосов
/ 07 декабря 2018

Я выполняю следующие два слияния с запросами в oracle, и первый выполняется, но второй слияние с оператором не выполняется.Он возвращает следующий ответ: ORA-30926: невозможно получить стабильный набор строк в исходных таблицах.

Оба запроса используют одни и те же таблицы и очень похожи.Единственная разница между ними заключается в том, что во втором запросе на слияние используются три условия «ВКЛ», а в первом - только два условия «ВКЛ».

Мне нужно найти обходной путь, чтобы мое намерение со вторым запросом было выполнено.Пожалуйста, помогите.

Запрос 1)

MERGE INTO loc_final_2_exp t USING (        
    SELECT DISTINCT upper(trim(city)) as city, 
                    upper(trim(state)) as state, 
                    upper(trim(county)) as county  
    FROM audtr_rgn_assgnmnts) a     
    ON (upper(trim(t.city)) = a.city AND 
        upper(trim(t.state)) = a.state)
WHEN MATCHED THEN UPDATE SET t.county = a.county;

Запрос2)

MERGE INTO loc_final_2_exp t USING (     
    SELECT DISTINCT  upper(trim(city)) as city, 
                     upper(trim(state)) as state, 
                     upper(trim(county)) as county, 
                     upper(trim(auditor)) as auditor
    FROM audtr_rgn_assgnmnts) a   
    ON (upper(trim(t.county))=a.county and 
        upper(trim(t.city)) = a.city and 
        upper(trim(t.state)) = a.state)
WHEN MATCHED THEN UPDATE SET t.loc_status = a.auditor;

1 Ответ

0 голосов
/ 07 декабря 2018

Информация, предоставленная вами для вашего случая, недостаточна, т.е. вы не объяснили, какова ваша структура БД, с акцентом на первичные ключи и уникальные ключи / ограничения в этих двух таблицах.Вы не показали пример данных.

Как описано в документации, ошибка «ORA-30926: невозможно получить стабильный набор строк ...» означает, что критерии соответствия оператора слияния вызывают более одногоСтрока источника слияния совпадает хотя бы с одной строкой в ​​целевой таблице.

И нет, это не просто список условий, которые отличаются между вашими двумя операторами.У вас также есть другой набор столбцов, возвращаемых вторым подзапросом, который - с DISTINCT на месте - предполагает, что у вас есть записи с различными значениями auditor для некоторых комбинаций city, state иcountry в таблице audtr_rgn_assgnmnts.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...