Java 基于Oracle JDBC数据库更改通知更新表
如何获取更新行的更改通知,如行数据/行描述。我能够获取更新的行Id 我需要根据更新表1后作为通知获得的行Id将表1与表2同步。我读过一些关于通知的网站,但找不到任何关于如何根据通知更新表的信息。请帮忙 下面是我在Oracle上找到的一些帮助信息:Java 基于Oracle JDBC数据库更改通知更新表,java,database,oracle,jdbc,notifications,Java,Database,Oracle,Jdbc,Notifications,如何获取更新行的更改通知,如行数据/行描述。我能够获取更新的行Id 我需要根据更新表1后作为通知获得的行Id将表1与表2同步。我读过一些关于通知的网站,但找不到任何关于如何根据通知更新表的信息。请帮忙 下面是我在Oracle上找到的一些帮助信息: 中间层中的应用程序需要快速访问缓存副本 数据库对象,同时使缓存在中尽可能保持最新 与数据库的关系。缓存的数据过期或“过时” 当事务修改数据并提交时,将 应用程序存在访问错误结果的风险。如果应用程序 使用数据库更改通知,然后Oracle数据库可以发布 已
中间层中的应用程序需要快速访问缓存副本 数据库对象,同时使缓存在中尽可能保持最新 与数据库的关系。缓存的数据过期或“过时” 当事务修改数据并提交时,将 应用程序存在访问错误结果的风险。如果应用程序 使用数据库更改通知,然后Oracle数据库可以发布 已注册对象发生更改时的通知,包括详细信息 改变了什么
作为对通知的响应,应用程序可以刷新缓存 通过从后端数据库获取数据 我注意到,在“使用数据库更改通知开发应用程序”的第六段中指出: 通知仅包含有关更改的行或对象的元数据,而不包含更改的数据本身 因此,似乎没有办法让Oracle告诉您,FIELD_X
或DESCRIPTION
或任何更改。一旦接收到更改通知,该通知告诉您表和ROWID,您需要取出已更改的数据(如果合适的话),并更新缓存的副本
您的里程可能会有所不同
分享和享受。
表1
和表2
,大概是指数据库中的表,对吧?不是用户界面中的表。Table1
和Table2
都在Oracle数据库中吗?它们是否在同一个Oracle数据库中?还是不同的Oracle数据库?您是否有理由不使用Oracle附带的内置复制解决方案来编写自己的自定义代码?是的,它们是数据库中的表。目前,它们在同一个数据库中,但实际情况将在以后的多个平台上改变为不同类型的数据库。有一些复制技术已经做到了这一点(例如Oracle的金门)——我很犹豫是否尝试自己从头开始构建这类技术。您是否试图只允许表2
位于非Oracle数据库上?或者允许表1
同时位于非Oracle数据库上?只有一个表的数据库类型不同对不起,我不确定我是否理解您的意思。我想您可能会说源表Table1
将始终驻留在Oracle数据库中,但目标表Table2
可能驻留在Oracle数据库或非Oracle数据库中。如果是这样的话,我仍然会使用一种内置的复制技术,而不是尝试编写您自己的复制技术。如何创建缓存副本?如果我正确理解您问题的文本,一个表(在本例中,它似乎是Table1)是源表,而Table2似乎是缓存。在这种情况下,我建议在Table1上创建一个触发器,它在插入、更新或删除时触发,并更新Table2以匹配Table1中现在的内容。祝你好运。