Как автоматически обновить запись в базе данных? - PullRequest
2 голосов
/ 06 марта 2012

У меня есть таблица заданий, в которую я вставляю новые задания.Эта таблица также содержит дату публикации задания.

По умолчанию статус задания открыт при новой вставке.

Теперь я хочу изменить статус задания с открытого на закрытое, когдаработа становится старше 30 дней.

Как мне это сделать?

Ответы [ 2 ]

3 голосов
/ 06 марта 2012

Попробуйте создать событие, которое будет выполняться каждый день, как показано ниже

CREATE EVENT myevent
  ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
  DO
    UPDATE my_table SET status ='closed'
    WHERE post_date > DATE_ADD(now(), INTERVAL -30 DAY)
    AND status='open'

- Обновление измененный синтаксис

  CREATE EVENT myevent
  ON SCHEDULE EVERY 24 HOUR
  DO
    UPDATE my_table SET status ='closed'
    WHERE post_date > DATE_ADD(now(), INTERVAL -30 DAY)
    AND status='open'
1 голос
/ 06 марта 2012

Используйте работу cron, чтобы справиться с этим. http://en.wikipedia.org/wiki/Cron

Если вы не можете справиться с кронами, вы можете сделать «крону бедняков». Означает, что фактический процесс, который обновляет все ваши записи заданий, происходит, когда кто-то посещает вашу страницу (с дополнительными проверками, когда был последний запуск). Если вы делаете это «плохим» способом, я предлагаю запустить другой поток, чтобы сохранить ваш сайт ответственным.

...