2012-02-23 64 views
0

我有數據庫的例子SQL,並從三方獲取提要到我的數據庫(每次更新它)。我需要得到通知,我的應用程序時就像examle:從數據庫中獲得通知

select * form table Bonus > 50%

我用普通的Windows服務和檢查所有的數據庫,或者我可以將它設置在SQL和SQL得到警報?我應該儘快收到通知,以便每隔1秒或5秒檢查一次數據庫,這太難了。

回答

3

這取決於您的數據庫。幾乎所有數據庫都可以在數據更改時運行觸發器,但觸發器內的代碼通常是SQL(不支持打開連接等)。

有些和Oracle一樣允許觸發器,它們也可以運行Java代碼。在這裏,你可以在數據庫中建立一個解決方案。

但有一個缺點:如果信號無法發送會發生什麼?如果整個交易被回滾(這會損害其他相對不相關的服務)

所以通常的解決方案是編寫代碼,每小時左右運行查詢,然後在條件滿足時發送信號。

如果查詢很昂貴,那麼你可以混合使用這兩種方法:只有當某些東西已經改變(使用觸發器)並將結果保存在表中時才運行查詢(比如「發生在$ timestamp處的東西)。 ,請檢查自上次信號以來是否有更新。