|
Модераторы: LSD |
|
alekspv |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 30.3.2009 Репутация: нет Всего: нет |
Здравствуйте. У меня такой вопрос как в таблице Oracle проверить наличие или отсуствие записи? Если запись не найдена, то её нужно вставить, иначе - обновить. Каким образом мне сделать такую проверку?
|
|||
|
||||
Zloxa |
|
|||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
Если уникальность записи ограничивается схемой данных (первичный ключ или ограничение уникальности) - проверки выполнять не надо. Над пробовать вставить, если может вставиться, значит вставится, если нет - возникнет исключение, которое следует игнорировать. Это самый простой и надежный способ. Любые прочие способы либо не надежны, либо требуют каких-то дополнительных действий по блокированию ресурсов. Ведь между проверкой и вставкой может произойти вставка в другой сессии и вставка будет произведена при наличии зпаписи в табице.
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15711 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 537 |
А чем MERGE плох? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Zloxa |
|
||||||||||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
тем же, чем проверка + вставка. Сессия 1
сессия 2
встала на блокировке сессия 1
сессия 2
если бы не было ключа - в таблице оказалось бы две записи. PS: А вобще да. Я наверное слишком много домыслил и дал ответ не на тот вопрос. Это сообщение отредактировал(а) Zloxa - 2.10.2014, 17:40 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
||||||||||
|
|||||||||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15711 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 537 |
Не понял, чем метод предлагаемый тобой: лучше? Он точно так же встанет на блокировке. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Zloxa |
|
|||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
LSD, я походу дал ответ не на тот вопрос. ТС ничего не говорит о конкуренции, а я, походу, пропустил что ему нужно апдейтиться. Почему-то полагал что ему нужно просто вставиться, причем в табличку без констрейнта. С какого вдруг бадуна меня так занесло - хз. Вероятность что ТС будет полезен овтет "MERGE", пожалуй куда выше, чем то, о чем подумал я.
Это сообщение отредактировал(а) Zloxa - 2.10.2014, 17:48 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
Правила форума "Oracle" | |
|
Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Oracle | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |