автоматизация MySQL - PullRequest
       12

автоматизация MySQL

0 голосов
/ 15 января 2010

У меня есть таблица «команды» со столбцом «неактивно» и другая таблица «события» со столбцом «время». Как можно обновить (неактивную) колонку «неактивно», если последняя дата в «событиях» для какой-либо команды произошла X некоторое время назад?

Я знаю, что это можно сделать с помощью PHP-скрипта, но я ищу решение SQL

Ответы [ 2 ]

1 голос
/ 15 января 2010

В MySQL 5.1 у вас есть СОБЫТИЯ ... в основном это похоже на задание cron, но внутри базы данных:

http://dev.mysql.com/doc/refman/5.1/en/events.html

Вы можете установить и запустить его, ну, так часто, как вам нужно сделать обновление. что-то вроде:

delimiter //

CREATE EVENT update_inactive_teams
ON SCHEDULE EVERY 1 DAY
ON COMPLETION PRESERVE
ENABLE
DO 
UPDATE teams
SET    inactive = 1
WHERE  now() - 14 DAY > (
       SELECT MAX(event_date)
       FROM   events  e
       WHERE  e.team_id = teams.id
       )
//
delimiter ;

Вам может потребоваться настроить сервер для включения событий: http://dev.mysql.com/doc/refman/5.1/en/events-configuration.html

SET GLOBAL event_scheduler = ON;

К сожалению, вам нужна привилегия SUPER, чтобы включить ее: http://dev.mysql.com/doc/refman/5.1/en/events-privileges.html

0 голосов
/ 15 января 2010
update teams t
   set t.inactive = 1
 where :x > (select max(e.time) 
               from events e 
              where e.team_id = t.id) - current_time;

да, вы можете поместить это в событие или запустить с помощью mysql из скрипта cron.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...