2015-04-13 3 views
0

Я пишу базу данных MySQL, и я хочу сделать заголовок внутри самой базы данных MySQL через Events, если это возможно. Я обновляю базу данных через службу Windows, написанную на VB.net, и не хочу делать это с помощью отдельной программы типа «серверный контроль».mysql check при обновлении строки

В принципе, я написал ниже в базу данных, но это не совсем то, что я хочу:

Create Event MachineOffline 
On 
    SCHEDULE Every 2 Minute 
Do 
    UPDATE maindb.monitortable SET Online='1'; 

Я хотел бы сказать что-то вроде ниже:

Create Event MachineOffline 
On 
    SCHEDULE Every 2 Minute 
Do 
    IF **RowX updated < 2 minutes ago** then 
    UPDATE Database.Table SET Online='0' where RowX(ID); 

Я понятия не имею, как достичь этого, следовательно, моего вопроса для всех. У меня нет желания создавать

+0

вам нужно другое поле в вашей базе данных - 'last_updated ', тогда вы просто проверяете и устанавливаете это по мере необходимости. –

+0

Ok - @pala_ может ли MySQL выполнить сравнение в этом поле и current_timestamp для запуска инструкции if? Спасибо, в противном случае! – IMPhill

+0

yep это именно то, что он может сделать. –

ответ

1

Если вы даете Database.Table дополнительный столбец, позволяет сказать, last_updated timestamp, вы можете обновить его следующим образом:

update Database.Table 
    set online=0, last_updated = now() 
    where last_updated <= now() - interval 2 minute 
    and online=1 
+0

вот такое замечательное решение, спасибо огромное! Конечно, я буду использовать это в своем проекте. Не знал, что MySQL выполняет функцию «интервал», мне нужно будет изучить это больше. – IMPhill

+0

его сокращенное обозначение, существует целый ряд функций для решения различий даты и времени. [см. здесь] (http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html) –