URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7543
[ Назад ]

Исходное сообщение
"SELECT ... FOR UPDATE и ORDER BY"

Отправлено sy , 13-Авг-08 17:34 
Create table t (id INT NOT NULL PRIMARY KEY, ... );

Предположим я хочу выбрать несколько записей и при необходимости обновить их (решения принимаются на стороне клиента БД).

Тогда я выполняю SELECT * FROM t WHERE ... FOR UPDATE (запрос вернет несколько записей)
и я так понимаю - что ни кто не гарантирует в каком порядке они будут возвращенны и заблокированы.

Предположим несколько клиентов пытаются одновременно выполнить такой SELECT -
Есть опастность DEADLOCK'а. Тогда меня спасет SELECT * FROM t WHERE ... ORDER BY ... FOR UPDATE:)

Я все правильно понимаю или нет?:) Если ошибаюсь то где?


Содержание

Сообщения в этом обсуждении
"SELECT ... FOR UPDATE и ORDER BY"
Отправлено angra , 13-Авг-08 23:55 
Для начала ответьте на вопрос - что за движок используется. Если MyISAM, то можете забыть про FOR UPDATE. Ну а если InnoDB, то прочитайте в доке storage-engines.html#innodb-locking-reads, там все ясно расписано.

"SELECT ... FOR UPDATE и ORDER BY"
Отправлено sy , 14-Авг-08 07:59 
>Для начала ответьте на вопрос - что за движок используется.

Простите, в ключевых словах указал, в тексте забыл - Движок PostgreSQL:)

Пошол дальше курить мануал - может, найду, что пропустил, модет придумаю как проверить)



"SELECT ... FOR UPDATE и ORDER BY"
Отправлено Аноним , 14-Авг-08 15:27 
Блокируются все строки одновременно.