@biohan

MySQL SELECT FOR UPDATE?

Всем привет.

Как правильно блокировать строки на чтение?
Есть
begin;
select a.d from a where a.b=c for update;
update a set a.d=a.d+1 where a.b=c;
commit;


Когда скрипт работает параллельно, все равно читаются одинаковые строки
  • Вопрос задан
  • 254 просмотра
Пригласить эксперта
Ответы на вопрос 2
MetaAbstract
@MetaAbstract
Архитектор информационных систем и баз данных. Ful
Note

Locking of rows for update using SELECT FOR UPDATE only applies when autocommit is disabled (either by beginning transaction with START TRANSACTION or by setting autocommit to 0. If autocommit is enabled, the rows matching the specification are not locked.

Locking of rows for update using SELECT FOR UPDATE...
Ответ написан
Комментировать
uxoos
@uxoos
PHP C++ Android
mysql_query("SET autocommit = 0");
$result = mysql_query("SELECT * FROM table WHERE locked = 0 LIMIT 1 FOR UPDATE");
$row = mysql_fetch_assoc($result);
mysql_query("UPDATE table SET locked = 1 WHERE id = 1;");
mysql_query("COMMIT;");
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы