2012-02-23 76 views
0

我有数据库的例子SQL,并从三方获取提要到我的数据库(每次更新它)。我需要得到通知,我的应用程序时就像examle:从数据库中获得通知

select * form table Bonus > 50%

我用普通的Windows服务和检查所有的数据库,或者我可以将它设置在SQL和SQL得到警报?我应该尽快收到通知,以便每隔1秒或5秒检查一次数据库,这太难了。

回答

3

这取决于您的数据库。几乎所有数据库都可以在数据更改时运行触发器,但触发器内的代码通常是SQL(不支持打开连接等)。

有些和Oracle一样允许触发器,它们也可以运行Java代码。在这里,你可以在数据库中建立一个解决方案。

但有一个缺点:如果信号无法发送会发生什么?如果整个交易被回滚(这会损害其他相对不相关的服务)

所以通常的解决方案是编写代码,每小时左右运行查询,然后在条件满足时发送信号。

如果查询很昂贵,那么你可以混合使用这两种方法:只有当某些东西已经改变(使用触发器)并将结果保存在表中时才运行查询(比如“发生在$ timestamp处的东西)。 ,请检查自上次信号以来是否有更新。