MySQL способ сделать блокировку на странице PHP - PullRequest
0 голосов
/ 09 июня 2010

у меня есть следующая таблица mysql:

myTable:

id int auto_increment

voucher int not null

id_user int null

Я заполнил поле ваучера значениями от 1 до 100000, поэтому у меня есть 100000 записей;когда пользователь нажимает кнопку на странице PHP, мне нужно выделить запись для пользователя, поэтому я делаю что-то похожее, например:

update myTable set id_user = XXX где voucher = (SELECT * FROM (SELECT MIN (ваучер) FROM myTable WHERE id_user имеет значение null) v);

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

Я думаю, что должен быть правильный способ сделать это, не могли бы вы помочь мне, пожалуйста?Спасибо !Cris

1 Ответ

0 голосов
/ 09 июня 2010

Если вы действительно хотите сериализовать свой процесс, вы можете получить имя таблицы блокировки таблиц «Запись» в начале вашей транзакции и разблокировать таблицы по завершении.

Если вы используете Innodb и транзакции, вам необходимовыполнять таблицы блокировки после начала транзакции.

Я не поддерживаю этот метод, так как обычно есть лучший способ обработки, однако, если вам нужно быстрое и грязное решение, это будет работать с минимальнымколичество изменений кода.

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