我有一个连接到远程Oracle数据库视图的java应用程序。
有没有人知道Java中监视此表的更改方式?即如果有更新插入等我需要做出反应。
答案 0 :(得分:10)
查看Oracle Change Notification,这是一个非常有趣的Oracle功能。
来自Oracle文档:“数据库更改通知是一项功能,使客户端应用程序能够向数据库注册查询并接收通知,以响应与查询关联的对象的DML或DDL更改。通知发布当DML或DDL事务提交时由数据库提供。“
答案 1 :(得分:5)
您可以在表上放置INSERT / UPDATE / DELETE触发器,以便在对表进行“数据”更改时执行某些操作。 (而不是改变表的结构)
我相信10g还支持视图触发器。
但是我不知道你怎么能通过民意调查来判断另一个java进程。
对不起。
你可能会创建一些解决方案,其中java应用程序有一个'listen'服务器,数据库将其推回一条消息。但这听起来很难维持。
评论中的Justin Cave表明您可以配置Oracle Streams以发送Java应用程序可以通过JMS订阅的逻辑更改记录(LCR)。或者触发器可以将记录写入Java可以通过JMS订阅的高级队列。
您仍然需要警惕Oracle转换.. 由于Oracle事务的工作方式,触发器将触发更改,但它也可能会触发多次..
并且在任何情况下,java应用程序都无法在执行提交之前“看到”更改。