我对数据库及其在CRUD操作之外提供的功能不是很熟悉。
我的研究使我 引人注目 。基本上,触发器似乎提供了这种类型的功能:
(来自维基百科) 通常,有三个触发事件导致触发器“触发”: INSERT事件(将新记录插入数据库中)。 UPDATE事件(因为记录正在更改)。 DELETE事件(因为一条记录正在被删除)。
(来自维基百科)
通常,有三个触发事件导致触发器“触发”:
我的问题是:当使用某种触发语义对记录进行更新/删除/插入时,数据库是否可以通过Java通知我(最好包括已更改的数据)?
该问题可能有一些替代解决方案?如何收听数据库事件?
我要这样做的主要原因是这样的情况 :
我有5个客户端应用程序,它们全部在不同的进程中/存在于不同的PC中。它们都共享一个公共数据库(在这种情况下为Postgres)。
可以说一个客户更改了数据库中所有5个客户都感兴趣的记录。我正在尝试考虑“通知”客户更改的方法(最好是附有受影响的数据),而不是他们以一定的间隔查询数据。
使用Oracle,您可以在表上设置触发器,然后让触发器发送JMS消息。Oracle有两种不同的JMS实现。然后,您可以使用JDBC驱动程序来“监听”消息。我已经使用这种方法将更改推送到应用程序或轮询。如果您正在使用Java数据库(H2),则还有其他选择。在我当前的应用程序(SIEM)中,我在H2中具有使用JMX发布更改事件的触发器。