Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Oracle > Проверка на наличие записи в таблице |
Автор: alekspv 15.9.2014, 18:14 |
Здравствуйте. У меня такой вопрос как в таблице Oracle проверить наличие или отсуствие записи? Если запись не найдена, то её нужно вставить, иначе - обновить. Каким образом мне сделать такую проверку? |
Автор: Zloxa 15.9.2014, 20:05 |
Если уникальность записи ограничивается схемой данных (первичный ключ или ограничение уникальности) - проверки выполнять не надо. Над пробовать вставить, если может вставиться, значит вставится, если нет - возникнет исключение, которое следует игнорировать. Это самый простой и надежный способ. Любые прочие способы либо не надежны, либо требуют каких-то дополнительных действий по блокированию ресурсов. Ведь между проверкой и вставкой может произойти вставка в другой сессии и вставка будет произведена при наличии зпаписи в табице. |
Автор: Zloxa 2.10.2014, 17:33 | ||||||||||
тем же, чем проверка + вставка. Сессия 1
сессия 2
встала на блокировке сессия 1
сессия 2
если бы не было ключа - в таблице оказалось бы две записи. PS: А вобще да. Я наверное слишком много домыслил и дал ответ не на тот вопрос. ![]() |
Автор: LSD 2.10.2014, 17:39 | ||
Не понял, чем метод предлагаемый тобой:
лучше? Он точно так же встанет на блокировке. |
Автор: Zloxa 2.10.2014, 17:46 |
LSD, я походу дал ответ не на тот вопрос. ТС ничего не говорит о конкуренции, а я, походу, пропустил что ему нужно апдейтиться. Почему-то полагал что ему нужно просто вставиться, причем в табличку без констрейнта. С какого вдруг бадуна меня так занесло - хз. Вероятность что ТС будет полезен овтет "MERGE", пожалуй куда выше, чем то, о чем подумал я. ![]() |