0

我有数据库,例如 SQL,并从 3 方获取提要到我的数据库中(每次更新)。像examle一样,我需要收到我的应用程序的通知:

select * form table Bonus > 50%

我应该使用 Windows 服务并检查所有数据库,还是可以在 sql 中设置它并从 SQL 获取警报?我应该尽快收到通知,以便每 1 或 5 秒检查一次数据库,这太难了。

4

1 回答 1

3

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

一些,如 Oracle,允许触发器,它们也可以运行 Java 代码。在这里,您可以在数据库中构建解决方案。

但是有一个缺点:如果无法发送信号会怎样?是否应该回滚整个事务(这会损害其他相对不相关的服务。

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

如果查询很昂贵,那么您可以将两者混合使用:仅在发生更改时运行查询(使用触发器)并将结果保存在表中(例如“在 $timestamp 发生了某事)。在您的应用程序中,只需检查是否自上次信号以来有更新。

于 2012-02-23T11:50:39.573 回答