PHP и MySQL блокировка записей в базе
Первое что приходит на ум - создать доп. колонку в базе, содержащую состояние: открыто|закрыто.
Есть ли какие либо средства языка РНР для реализации этого?
mysql_query();
Цитата: UAS
Ну а так что мешает при открытии редактирование чего-то заносиь блокировку в БД?
mysql_query();
mysql_query();
а можно по подробнее?
Потом как откроют на редактирование, то mysql_query("UPDATE `table` SET `in_edit`=1"); когда закончат, то ставь на 0.
Цитата: UAS
Ну если я правильно понял что ты хочешь, то просто создавай таблицу, где будет поле "редактируется ли это поле". Что-то типа ALTER TABLE `table` ADD `in_edit` BOOL DEFAULT 0;
Потом как откроют на редактирование, то mysql_query("UPDATE `table` SET `in_edit`=1"); когда закончат, то ставь на 0.
Потом как откроют на редактирование, то mysql_query("UPDATE `table` SET `in_edit`=1"); когда закончат, то ставь на 0.
Не прокатит. Между селектами и апдейтами всеровно промежутки останутся. Кроме того, что если запись не розблокируется ? А такое будет случатся сплош и рядом.
Я в БД олух, но вроде слышал когдато на лекциях толе о блокирующих транзакциях толи о чемто подобном. Не знаю есть ли такое в МайСКЛ.
Я б советовал автору в разделе БД спрашивать. Ета задача должна решатся средствами СУБД, а не РНР.
В одном проекте мы делали отдельным полем (как было выше сказано) и отслеживали время "галочки". На редактирование отводилось 30 минут. Если раньше - то ессно снималось. По крону запускался скрипт каждые 10 минут, который снимал блокировку с записей у которых дата блокировки была больше 30 минут (время в данном случае абстрактное, кому какое приемлемо, тот такое и поставит).
Транзакции в MySQL: