MySQL - Примените блокировку на уровне строк с помощью mysqli


Используя mysqli PHP, как вы применяете блокировку на уровне строк?

Блокировки на уровне строк не позволяют никому редактировать текущие строки, соответствующие вашим критериям, верно? но останавливают ли они пользователя, вставляющего строку, соответствующую вашим критериям?

Спасибо

Author: Mark, 2009-11-13

2 answers

Если вы хотите заблокировать определенную строку от редактирования, используйте FOR UPDATE в конце запроса SELECT. это блокирует строку в вашей транзакции и запрещает другим пользователям обновлять ее. это работает только в транзакционных системах хранения данных, таких как innodb.

В ответ на ваши вопросы, да, блокировки на уровне строк "запрещают любому редактировать текущие строки, соответствующие вашим критериям". более конкретно, если (внутри транзакции) вы ВСТАВЛЯЕТЕ, ОБНОВЛЯЕТЕ или УДАЛЯЕТЕ строку, эта строка блокируется от редактирования кто-либо другой, пока вы не совершите свою транзакцию. если вы ВЫБЕРЕТЕ строку с помощью FOR UPDATE, это также заблокирует строку.

Однако это не "останавливает пользователя, вставляющего строку, соответствующую вашим критериям".

 8
Author: longneck, 2009-11-13 14:55:52

Чего вы пытаетесь достичь? Движок InnoDB использует блокировку на уровне строк , но это автоматический внутренний процесс MySQL.

 0
Author: RMcLeod, 2009-11-13 14:41:44