|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.08.2013, 20:27 | #1 |
Новичок
Джуниор
Регистрация: 12.08.2012
Сообщений: 2
|
Запрос с Merge
Здравствуйте!
Прошу помочь в определении причины возникновения ошибки при запуске следующего скрипта в Oracle: merge into a using b on (a.id_a= b.id_a and a.value1=5) when not matched then insert(id_a, value1, value2) values(b.id_a, 5, b.val); Появляется ошибка: ORA-00001: нарушено ограничение уникальности Ограничение уникальности стоит на комбинацию полей a.id_a и a.value1. При этом уже имеющиеся значения в таблице A это ограничение не нарушают, и в таблице b также только уникальные значения. Однако если переписать запрос с помощью not exists, то ошибка исчезает. В чем может быть проблема? |
03.08.2013, 01:34 | #2 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,775
|
Удаленно могу предположить, что проблема все же в сопоставлении значений: проход делается по всем значениям b, но вставляются они в a с прошитой константой 5, и если на условие a.id_a= b.id_a есть несколько значений, при вставке второго значения будет нарушение уникальности. Oracle не врет.
Получается, что фактически данный код работает как: Код:
|
03.08.2013, 19:26 | #3 |
Новичок
Джуниор
Регистрация: 12.08.2012
Сообщений: 2
|
Добрый вечер!
Мне нужно, чтобы в таблицу А вставлялись значения b.id_a, 5, b.val, если такого сочетания a.id_a= b.id_a and a.value1=5 еще нет в таблице A. Условие было реализовано с помощью not exists и проблема ушла, однако хотелось бы понять, почему merge заругался. Запрос запускался в нескольких базах (эти таблицы в них имеют одинаковую структуру) и в одной из баз при запуске появилась ошибка, однако в каждой из баз значение a.id_a= b.id_a уже имелось при вставке в таблице A, но ошибка появилась только однажды. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Cascade Merge Sort (на Cи) | to$in | Помощь студентам | 0 | 31.05.2013 12:57 |
Pекурсивная версия функции merge | stasito | Помощь студентам | 0 | 13.01.2012 14:54 |
рекурсивная версия функции merge | stasito | Помощь студентам | 0 | 12.01.2012 16:26 |
Подтверждение Merge | Chelius | Microsoft Office Excel | 2 | 21.06.2010 14:51 |
Merge menu | ds.Dante | Общие вопросы .NET | 0 | 17.08.2009 17:51 |