2015-01-12 56 views
-2

我有表X和字段結束時間(日期時間)和狀態(int) 狀態有2個條件。 1爲預訂和0爲可用如何自動更新數據庫中的一個字段

我想自動更新當EndTime(DateTime)等於當前時間的狀態值從1到0。

我是怎麼做到的?

注意:這就像在建築物內的人員註冊以及他們從什麼時間到何時離開。當時間結束時狀態(int)將自動從1變爲0。

+0

一些數據庫,例如SQL Server,讓您安排作業定期運行。您可以每隔五分鐘運行一次存儲過程,以便在'EndTime'過去時更新狀態值。請注意,它可能比看起來更復雜。如果您使用本地時間而不是世界時間,那麼當時間向前或向後移動一小時時,您可能每年會遇到兩次奇怪的問題。 – HABO

回答

2

你沒有提到你問的是哪個數據庫。讓我們假設MySQL和Postgres。

簡而言之,這些數據庫都不提供基於某種標準更新行的本地方式。您可以使用觸發器來執行一個函數,該函數將在更新一行時運行,但不能保證它將按照條件EndTime == CurrentTime運行。

我認爲你需要做的是實現一個定期運行的外部進程,例如, cron,並找到所有即將到期的行並自行更新它們。

+0

你介意給我一些代碼的例子嗎?我在數據庫中很新。我使用sql-server 2008和c#.Net構建應用程序。 – azalikaEriya

相關問題