代码之家  ›  专栏  ›  技术社区  ›  LenW

Oracle表更改监视器

  •  7
  • LenW  · 技术社区  · 16 年前

    我有一个Java应用程序,它连接到一个远程Oracle DB上的视图。

    有人知道Java中的一种监视这个表的方法吗?也就是说,如果有更新等插入,我需要作出反应。

    2 回复  |  直到 16 年前
        1
  •  5
  •   Community CDub    7 年前

    可以在表上放置插入/更新/删除触发器,以便在对表进行“数据”更改时执行某些操作。(与更改表结构相反)

    我相信10G也支持视图上的触发器。

    但我不确定如何通过轮询来通知其他进程的Java进程。

    对不起的。

    您可能会创建一些解决方案,Java应用程序有一个“侦听”服务器,数据库将它推回到消息中。但这听起来很难维持。

    Justin Cave 在注释中,您可以配置Oracle流来发送Java应用程序可以通过JMS订阅的逻辑更改记录(LCRS)。或者,触发器可以将记录写入JAVA可以通过JMS订阅的高级队列。

    你仍然需要警惕甲骨文的交易。 由于Oracle事务的工作方式,触发器将在更改时触发,但也可能多次触发。

    在任何情况下,Java应用程序都不可能看到“更改”,直到执行了提交。

        2
  •  10
  •   Yusuf K.    7 年前

    Oracle Change Notification 这是一个非常有趣的Oracle功能。

    从Oracle文档中: “数据库更改通知是一项功能,使客户端应用程序能够在数据库中注册查询,并接收响应与查询关联的对象上DML或DDL更改的通知。当DML或DDL事务提交时,数据库会发布通知。“