如何检查数据库中是否插入了具有特定值的特定行

时间:2012-02-03 11:32:53

标签: java informix

我正在使用Informix DB。此问题可能与某个特定数据库无关。但我想知道如何在Java中,不断探测数据库并检查某个行是否已添加到数据库中的表中。基本上,流程是:

  1. 我的Java应用程序应该使用JDBC来检查是否填充了某个表。
  2. 如果不是,则应等到插入一行。
  3. 我的问题是如何让Java知道行插入。我不希望添加任何触发器或任何东西,但在纯Java中可以检查是否添加了行。

    我想到的一些想法是不断调用DB作为行,或定期(每半小时左右)调用DB并检查行是否可用。但我正在寻找的东西就像一个可以做到这一点的倾听者。

1 个答案:

答案 0 :(得分:1)

Informix DBMS中没有任何工具可以在特定行到达表时发出信号。

嗯,我这么说,但是有DB-Cron工具可以定期执行任务(在服务器内部),你可以设想安排任务轮询数据以查看它是否已到达并且发送消息(不知何故)以表明它有。这将是非平凡的,特别是表明它已到达的部分。

JDBC协议(通常是SQL协议)基本上是同步的;客户端发送请求并等待DBMS的回答。

所以,实际上,如果您的延迟时间是半小时,您可以创建一个管理任务来处理处理(如果这对您来说至关重要,您可以编写服务器在服务器中执行的Java UDR),或者您可以安排Java(客户端)程序定期轮询,以确定您需要的信息是否存在。即使中等数量的进程轮询单独的值(甚至是相同的值),半小时的延迟也不会给任何事情带来压力。另一方面,您通常会尽量避免轮询。您需要在响应特定数据到达和一般系统响应之间取得平衡。总体而言,一般系统响应性更重要,因此请尽可能保持轮询间隔。

如果您的轮询间隔需要低于秒,则余额会有所不同 - 这项工作会更加困难。