Обновление данных в бд

Статус
Закрыто для дальнейших ответов.

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Предположим, что на страничке 100 пользователей и при выполнении определенного условия строка в БД обновляется(изменяются данные), затем эту обновленную строку больше нельзя будет никому вообще никогда обновить.
Так вот..
Тыкнули 3 человека "обновить" в одну и ту же секунду(или даже долю секунды) и строка в таблице обновится 3 раза. А это будет баг, причем таки не очень хороший для меня гг
Как избавиться от этого?) мб можно как-то строку в бд заблокировать перед изменением или ещё ченть?
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
да вроде все на ладони: в строке поставить какое-нибудь значение типа can_change = 0, а при первом изменении can_change = 1 и обновлять строку по этому условию
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
да вроде все на ладони: в строке поставить какое-нибудь значение типа can_change = 0, а при первом изменении can_change = 1 и обновлять строку по этому условию
А если обновляется таблиц несколько?
1. Проверяем, обновлялась ли таблица по этому полю
2. Если не обновлялась то обновляем таблицу 1, таблицу 2, таблицу 3
3. Обновляем поле нашей таблицы, указывая, что она обновлялась.
В эту самую же секунду у другого пользователя
1. Проверяем (выдрались не обновленые данные из таблицы т.к у первого пользователя скрипт не дошел до конца ещё)
2. Обновляем таблицу 1, таблицу 2, таблицу 3
3. Этот пункт не сработает т.к ему помешает условие "where can_change != 1"
---------------------------------
Остальные таблицы обновятся из пункта два((
Связывать их join'ом с первой и также добавлять условие это?
 
Статус
Закрыто для дальнейших ответов.
Верх Низ