2015-01-12 1 views
-2

У меня есть таблица X и поле EndTime (DateTime) и Status (int) Состояние имеет 2 условия. 1 для забронированных и 0 для доступныхКак обновить автоматическое поле в базе данных

Я хочу Auto update Значение состояния от 1 до 0, когда EndTime (DateTime) равно текущему времени.

Как я это делаю?

Примечание: это как для регистрации людей, которые находятся в здании, и с какого времени и до какого времени они уходят. когда время закончится. Статус (int) автоматически изменится с 1 на 0.

+0

Некоторые базы данных, например. SQL Server, позволяет планировать выполнение заданий с регулярным интервалом. Вы можете запустить хранимую процедуру каждые пять минут, чтобы обновить значения статуса, когда «EndTime» в прошлом. Обратите внимание, что это может быть сложнее, чем кажется. Если вы используете локальное, а не универсальное время, тогда у вас могут возникать нечетные проблемы два раза в год, когда время перемещается вперед или назад на один час. – HABO

ответ

2

Вы не упомянули, о какой базе данных вы спрашиваете. Предположим, что MySQL и Postgres.

Короткий ответ заключается в том, что ни одна из этих баз данных не предлагает собственный способ обновления строки на основе некоторых критериев. Вы можете использовать триггер для выполнения функции, которая будет выполняться при обновлении строки, но нет гарантии, что она будет работать для критериев EndTime == CurrentTime.

Я думаю, что вам нужно будет выполнить внешний процесс, который выполняется по расписанию, например. cron, и найдите все строки, которые истекают и обновляют их самостоятельно.

+0

не могли бы вы привести пример кода? Я довольно новый в базе данных. Я использую sql-server 2008 и C# .Net для создания приложения. – azalikaEriya