繁体   English   中英

使用Java ping数据库中的表

[英]Ping a table in the database with Java

我想知道是否有可能继续ping一个oracle表,直到将一行添加到表或删除。

我得到确认已添加或删除该行后,我想开始下一个操作。 首选方法是一直保持ping的查询,直到它发生。 通常在查询时我使用executeQuery方法,但只有在有结果时返回

我还没有找到能够做到这一点的方法。

所以有人知道这样做的方法吗?

在Oracle 11g中,您可以使用数据库更改通知 您可以注册以在发生更改时接收事件,而不是轮询数据库以检查更改。 还有的源代码示例在这里

如果您选择轮询,那么您应该仔细考虑您的查询。 例如,依赖于表中的行数 - SELECT COUNT(*) FROM your_table - 如果在查询的两次执行之间添加并从表中删除相同数量的行,则可能会给出错误的答案。

我不熟悉Oracle,所以我建议你采用独立于数据库的方法。

您是否删除或“停用”表中的记录? 如果你“停用”,你可以在每一行中保持一个“Version”列,在每个CUD操作中都是++'ing 例如,当您创建新行时,它的版本为1 在第一次更新是2 ,它继续。

这样,您可以依赖SELECT SUM(VERSION) ...而不是依赖SELECT COUNT(*) ... ;)

您还可以使用审计跟踪 - 审计每个表中的每个CUD操作 - 并轮询审计跟踪而不是表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM