用Java Ping数据库中的表

用Java Ping数据库中的表,java,database,oracle,Java,Database,Oracle,我想知道在表中添加或删除一行之前是否可以一直ping oracle表 我想在确认行已被添加或删除后开始下一个操作。首选的方法是一个查询,它会一直ping直到ping发生。 通常在查询时,我使用executeQuery方法,但只有当它有结果时才会返回 我还没有找到一个能做到这一点的方法 那么有人知道这样做的方法吗?在Oracle 11g中,您可以使用。您注册以在发生更改时接收事件,而不是轮询数据库以检查更改。这里有一个源代码示例 如果你选择轮询,那么你应该仔细考虑你的查询。例如,如果在两次执行查询

我想知道在表中添加或删除一行之前是否可以一直ping oracle表

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

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


那么有人知道这样做的方法吗?

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


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

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


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

我对Oracle不熟悉,因此我建议您采用与数据库无关的方法

您是否删除或“停用”表中的记录?如果您“停用”,您可以在每一行中维护一个“版本”列,在每个CUD操作中
++'ing
。例如,创建新行时,其版本为
1
。第一次更新之后是
2
,因此它会继续

这样,您就不必依赖
选择计数(*)…
,而可以依赖
选择总和(版本)…


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

我不熟悉Oracle,因此我建议您采用独立于数据库的方法

您是否删除或“停用”表中的记录?如果您“停用”,您可以在每一行中维护一个“版本”列,在每个CUD操作中
++'ing
。例如,创建新行时,其版本为
1
。第一次更新之后是
2
,因此它会继续

这样,您就不必依赖
选择计数(*)…
,而可以依赖
选择总和(版本)…


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

请更详细地描述您要执行的操作。”在添加或删除一行之前”-什么行,什么表,通过哪个进程?您想让您的应用程序收到有关数据库中每个更改的通知吗?您还没有找到一个能够做到这一点的方法,因为您需要编写此方法。。。基本上有一个线程,它每XX秒在您的表上运行一次select查询,直到找到您要查找的内容……看看这些问题:我是否正确理解您希望异步执行查询,在查询返回之前执行其他一些操作,并在查询返回后开始下一个操作?如果你能提供一个真实的用例,那将非常有帮助。请详细描述你想做什么在添加或删除一行之前”-什么行,什么表,通过哪个进程?您想让您的应用程序收到有关数据库中每个更改的通知吗?您还没有找到一个能够做到这一点的方法,因为您需要编写此方法。。。基本上有一个线程,它每XX秒在您的表上运行一次select查询,直到找到您要查找的内容……看看这些问题:我是否正确理解您希望异步执行查询,在查询返回之前执行其他一些操作,并在查询返回后开始下一个操作?如果你能提供一个真实世界的用例,那将非常有帮助。我不确定我们是否一定要寻找一个独立于数据库的解决方案,因为这个问题被标记为“Oracle”。我知道,我刚才这么说是因为我不熟悉Oracle。考虑到这个评论是一个“大声的想法”:如果我们必须寻找一个与数据库无关的解决方案,Pnot肯定是这样的,因为这个问题被标记为“甲骨文”。我知道,我刚才说的是因为我不熟悉Oracle。认为评论是“大声思考”:P