mySQL - применить блокировку на уровне строк, используя mysqli - PullRequest
3 голосов
/ 13 ноября 2009

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

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

Спасибо

Ответы [ 2 ]

8 голосов
/ 13 ноября 2009

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

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

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

0 голосов
/ 13 ноября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...