Как сделать в MySQL изменение поля строки через время?
Есть определенная запись в таблице, пусть она будет называться tablename
В записи четыре столбца: id, login, date, suc
В поле date фиксируется текущая дата
В поле suc фиксируется так называемый доступ (1 - доступен, 0 - недоступен)
Нужно сделать так, чтобы была автопроверка каждую секунду в mysql, и если запись создана более чем N (пусть будет 10) дней назад ПО СРАВНЕНИЮ С полем date, выставлялось значение 0 в поле suc
Вообще это очень нерационально гонять mysql почем зря каждую секунду.
Более целесообразно при выборке вместо поля suc проверять разницу текущего времени с полем date.
например
select * from tableName where `date` > now() - interval 10 day
А если suc принципиально нужен, то:
select id, login, `date`, (`date` > now() - interval 10 day) as suc from tableName
Ну вообще базы так не делают. Их стараются делать в стиле WORM (Write Once - Read Many).
Вот. И долбить по таблице каждую секунду проверяя записи - это создавать нагрузку как майнер.
А зачем эта нагрузка? Атмосферу зря нагревать.
Вот пускай тот бизнес-процесс, который считывает поле suc - сам и обновляет и проверяет.
Это будет рационально. А пока он не считывает - никаких проблем и нет. Данные лежат
стационарно и не мешают.
Чем больше знаю, тем лучше понимаю, как мало знаю.
База Данных - это просто хранилище данных. Удобное, умное хранилище. Да, в нем можно делать алгоритмы, но в ограниченном объёме. Поэтому не стоит весь скриптовый функционал тащить в Базу Данных. У вас ведь HTML-страницы не База Данных генерирует, верно? Однозначно какие-то скрипты этим занимаются? Вот пусть эти скрипты и высчитывают, сколько дней прошло с момента date у конкретного пользователя, и если больше 10 суток - значит он ...подставьте сами...