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:)Я все правильно понимаю или нет?:) Если ошибаюсь то где?
Для начала ответьте на вопрос - что за движок используется. Если MyISAM, то можете забыть про FOR UPDATE. Ну а если InnoDB, то прочитайте в доке storage-engines.html#innodb-locking-reads, там все ясно расписано.
>Для начала ответьте на вопрос - что за движок используется.Простите, в ключевых словах указал, в тексте забыл - Движок PostgreSQL:)
Пошол дальше курить мануал - может, найду, что пропустил, модет придумаю как проверить)
Блокируются все строки одновременно.