![]() |
|
Модераторы: LSD |
![]()
|
|
| Гость_Станислав |
|
|||
|
Unregistered |
В строке
говорит: ERROR: relation "v_phone" does not exist |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Имя таблицы неправильное
-------------------- 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. |
|||
|
||||
| Гость_Станислав |
|
|||
|
Unregistered |
Так я тоже попробовал. На "READ COMMITTED" второй снова переписвает agent_id.
Да и потом, кажется тут в select нужно снова добавить lock_agent_id IS NULL, а то ведь выберет уже отработанный.
иначе было бы, если бы действительно можно было выбрать из переменной v_phone |
|||
|
||||
| Гость_Станислав |
|
|||
|
Unregistered |
Похоже, что другого не остается... но, чисто принципиально, интересно, есть ли другой выход. |
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: нет Всего: 144 |
Может, и есть, но тут все осложняется тем, что в условии UPDATE задействовано поле, которое этим же апдейтом и модифицируется. Получаем классическую аномалию неповторяемого чтения, сжатую до области действия одной-единственной команды. А вообще, разруливать конкурентные запросы средствами БД - то еще удовольствие. Гораздо удобнее управлять этими вещами извне, в серверном приложении. Если, конечно, таковое есть и если для него гарантируется монопольность доступа к данным. -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Без блокировок не обойтись. Но чтобы не блокировать таблицу целиком (в этот момент операторы которые уж получили свой номер, могут продолжать с ним работать не мешая нам), можно блокировать другой ресурс:
Или использовать встроенные средства наподобие Oracle-овского DBMS_LOCK. -------------------- 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. |
||||
|
|||||
| Гость_Станислав |
|
|||
|
Unregistered |
Это отработали на другом форуме (Postgres):
Работает, хотя принцип другой. Все же у меня есть сомнения по поводу рекурсивного вызова RETURN get_phone_id(p_agent_id). Мне кажется, что при одновременном запросе N'ым-количеством агентов, последнему прийдется вызывать эту функцию N-ое количество раз, предпоследний n-1, потом n-2 и так далее. И в конечном итоге, нагрузка на базу становится такой, что LOCK TABLE будет работать быстрее. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
А где здесь управление транзакциями? Клиент сам должен делать commit/rollback?
Не обязательно, все зависит от того как эти запросы наложатся по времени и как будут исполняться сервером. -------------------- 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. |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |