我可以在java程序中运行无限循环来检查第三方是否对数据库做了一些更改吗

我可以在java程序中运行无限循环来检查第三方是否对数据库做了一些更改吗,java,mysql,infinite-loop,multiple-users,Java,Mysql,Infinite Loop,Multiple Users,我正在用java设计一个程序,并使用mysql作为数据库。该程序允许多个用户连接到数据库 程序的一个重要部分是立即向用户更新另一个用户在特定表中所做的更改,该更改将让用户执行操作,因此更改将显示在用户端 我曾想过监听一个套接字,但我无法解决多个用户的概念以及发送者将如何仅通知特定用户而不是整个组 这类似于短信 所以我要做的是运行一个while循环,每10秒运行一次,以稍微提高性能,并根据我用来登录的用户名检查表 这会让我得到我想要的,但我知道这是没有效率的 有什么想法吗 使用数据库表中的“版本控

我正在用java设计一个程序,并使用mysql作为数据库。该程序允许多个用户连接到数据库

程序的一个重要部分是立即向用户更新另一个用户在特定表中所做的更改,该更改将让用户执行操作,因此更改将显示在用户端

我曾想过监听一个套接字,但我无法解决多个用户的概念以及发送者将如何仅通知特定用户而不是整个组

这类似于短信

所以我要做的是运行一个while循环,每10秒运行一次,以稍微提高性能,并根据我用来登录的用户名检查表 这会让我得到我想要的,但我知道这是没有效率的

有什么想法吗

使用数据库表中的“版本控制”模式。添加一个数字列,该列在每次更新表时递增,例如:

alter table users add version_number bigint:
然后,每次更新行时,也应增加此值:

update users
  set my_value = ...,
    version_number = version_number + 1 -- include this change
  where id = 1234

这样,每个客户机都会记住他们看到的最后一个版本号。如果他们发现了不同的版本号,则发生了更改,因此应采取措施。

如果您正在编写,为什么您需要检查数据库以查看是否有更改?@shmosel我不是编写多个用户向数据库写入内容的人,我想通知他们是否有更改,他们正在直接向数据库写入内容?这是非常不寻常的。他们应该通过一个网络应用。这是一个程序来管理一个有3名医生的诊所。它们都写入同一服务器上的同一数据库。我想做的是,如果接待处增加了某位医生的就诊,就通知他。还可以从一个用户向另一个用户发送文本消息。文本的数据与收件人用户一起存储在一个表中。但是,在用户执行操作之前,不会通知用户。我试图通过循环不断地检查更新来避免这种情况