Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Проблемы с MERGE  [new]
Daphne
Member

Откуда: Россия
Сообщений: 298
У меня есть вот такой запрос:
merge into rep_rashod_materialov rm
     using (select nomer_produkta,kod_agregata,nomer_agregata,kod_operacii,znah_rashoda,
                   nn,data_nach_rashoda,n_rashod,data_kon_rashoda,data_zapisi,avtor_zapisi,
                   n_obr,data_korr_zapisi 
from rashod_materialov@oskol t
where t.DATA_ZAPISI between last_day(add_months(trunc(sysdate),-3))+20/24 and
                                  last_day(add_months(trunc(sysdate),-2))+20/24
  and t.NN='0725000000'
  and t.KOD_AGREGATA='010'
  and t.KOD_OPERACII='10') t
        on (rm.data_korr_zapisi=t.data_korr_zapisi)
when matched then update set rm.znah_rashoda=t.znah_rashoda
when not matched then insert (rm.nomer_produkta,rm.kod_agregata,rm.nomer_agregata,
                              rm.kod_operacii,rm.znah_rashoda,rm.nn,rm.data_nach_rashoda,
                              rm.n_rashod,rm.data_kon_rashoda,rm.data_zapisi,rm.avtor_zapisi,
                              rm.n_obr,rm.data_korr_zapisi)
                     values(t.nomer_produkta,t.kod_agregata,t.nomer_agregata,
                            t.kod_operacii,t.znah_rashoda,t.nn,t.data_nach_rashoda,t.n_rashod,
                            t.data_kon_rashoda,t.data_zapisi,t.avtor_zapisi,t.n_obr,t.data_korr_zapisi)
И даже он работает, но только если таблица пустая. А вот если в ней уже есть записи, тогда вываливается ошибка - Невозможно получить устойчивый набор строк в таблицах. Подскажите пожалуйста, что я сделала некорректно... Мне нужно изменять значения только одного поля znah_rashoda при условии если изменилась data_korr_zapisi. Заранее благодарна!

Сообщение было отредактировано: 4 сен 08, 16:55
4 сен 08, 16:52    [6148223]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с MERGE  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Daphne
тогда вываливается ошибка - Невозможно получить устойчивый набор строк в таблицах. Подскажите пожалуйста, что я сделала некорректно...
Не обеспечили устойчивость (уникальность по условию) данных:
MERGE

автор
MERGE is a deterministic statement. That is, you cannot update the same row of the target table multiple times in the same MERGE statement.
4 сен 08, 16:59    [6148288]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с MERGE  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Daphne
...ошибка - Невозможно получить устойчивый набор строк в таблицах.
Какой код (номер) у этой ошибки? (ORA-?????)
4 сен 08, 17:01    [6148314]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с MERGE  [new]
Daphne
Member

Откуда: Россия
Сообщений: 298
Код 30926
4 сен 08, 17:07    [6148345]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить