2011-02-08 20 views
0

我該如何編寫一個觸發器,當PostgreSQL數據庫服務器的LocalDate更改時會觸發它? 當LocalDate(postgresql數據庫服務器的日期)發生變化時,我想要一個通知,這將是最有效的方法嗎? 需要通知的應用程序是用Java編寫的。觸發PostgreSQL數據庫的日期變更!

進一步說明: 我正在建設公共交通系統,我需要在每天開始時設置一天的時間表。這一天是根據數據庫服務器的時間。我如何以最小的開銷實現這一目標?

+0

僅觸發數據庫更改。你究竟想要完成什麼? – 2011-02-08 16:55:36

+0

請參閱問題中的說明。 – manishKungwani 2011-02-08 17:29:53

回答

1

沒有辦法做到這一點只使用數據庫沒有定期檢查。

如果您需要在客戶端應用程序中發出通知,則可以使用LISTEN/NOTIFY。您需要配置服務器調度程序(例如cron)以啓動在00:00連接到服務器的腳本併發出NOTIFY。但是這需要一個Java客戶端來定期檢查PQnotifies,這並不比定期檢查current_date好。

你需要做什麼?也許有更好的解決方案來解決你的突出問題。


你唯一明智的選擇是創建服務器程序,請問您的日常維護和使用的服務器操作系統的調度安排它(的cron Unix系統,Windows任務調度程序在Windows上)。

對於額外的可靠性:

  • 設置您的維護腳本來鎖定一個特殊的表保養(last_maintenance日期)
  • 當客戶端連接到數據庫應該檢查是否CURRENT_DATE = last_maintenance,如果它出錯了不是;
  • 如果當前維護正在運行,那麼它只會等待鎖定,直到完成。
1

我能想到的唯一的事情就是在當地時間上午12:01,每天一次將計劃作業(服務器端作業)插入當前日期到表格中。觸發器可以對此作出響應。