Здравствуйте!
Подскажите, пожалуйста, как мне получить значение folder2 в таблице и после этого сразу же инкрементировать это значение на +1. Важно, чтобы при большом количестве одновременных запросов полученные значения folder2 не повторялись.
+----+---------+--------+
| id | folder1 | folder2|
+----+---------+--------+
| 1 | 235 | 13 |
+----+---------+--------+
Запрос в php я бы сделал так:
$sql_query1 = "SELECT folder2 from tbl_name";
$sql_query2 = "UPDATE tbl_name SET folder2 = folder2 + 1"
Но, что если между $sql_query1 и sql_query2 пройдёт какое-то время, а другие пользователи также будут выполнять скрипт. Тогда у какого-то количества пользователей будет совпадение значений folder2.
Как этого можно избежать?
Спасибо!
Вам поможет блокировка таблиц:
$sql_query1 = "LOCK TABLE folder2 WRITE";
$sql_query2 = "SELECT folder2 from tbl_name";
$sql_query3 = "UPDATE tbl_name SET folder2 = folder2 + 1"
$sql_query4 = "UNLOCK TABLES";
В этом случае, даже если между query2 и query3 будет запущен SQL-запрос другим пользователем(подключением), он будет ждать, пока не будет снята блокировка пользователем(подключением), который её установил, запросом в query4.
Если таблица типа MyISAM - то можно поставить блокировку на строку, что будет менее затратно по ресурсам, но с этим вопросом вам лучше разобраться подробнее, прочитав про "Транзакции MyISAM".
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Столкнулся с задачей перенести за 1 вечер весь мой PHP код, что подключен к MySQL базе, на аналогичную базу Postgress и понял, что просто смена синтаксиса...
Как правильно можно организовать базу и сам код для календаря квестовИмеется несколько квестов
Имеется Ubuntu 1610 x64, необходимо создать статическую сборку Qt5 с MySQL для этой ОС