仅允许单个用户一次访问数据

时间:2018-06-11 20:32:24

标签: java mysql

我一直在处理一个问题,即一次只允许单个用户访问某些数据。这样做的原因是不止一个用户不能一次编辑数据。

我目前的解决方案如下:用户在GUI(java)中打开数据 - > mysql表中的值设置为"当前正在查看"对于数据。这样,如果另一个用户试图查看数据,它就会知道当前有人正在编辑它。

当用户完成编辑数据时出现问题。通常,他们会点击"完成"并且mysql值将改回" available"。但是,如果程序被强制关闭,或者用户失去电源怎么办?

在这种情况下,如何通知程序或mysql表,数据应该再次可用?

我目前使用的是WindowClosing事件,但如果程序被强制关闭,它就不起作用。

2 个答案:

答案 0 :(得分:1)

要解决其中一个用户在完成数据后未释放数据的问题,您可以实施心跳。

https://en.wikipedia.org/wiki/Heartbeat_(computing)

持续使用数据心跳用户,如果心跳停止,则可以将其设置为可用。

答案 1 :(得分:0)

我考虑过在编辑开始时保留一个日期(正如@MadProgrammer评论的那样),但这仍然不适用,因为你无法定义一个合理的限制,因为编辑会话可能持续很长时间,可能。

我要做的是使用记录用户的session。也就是说,当特定用户开始编辑记录时,您将其sessionID与记录关联为当前所有者。在此之后,您可以使用预定方法(或者当来自其他用户的其他写入请求时)检查此会话,如果它已经死亡,并且记录仍处于edit模式,则可以恢复{{ 1}}模式,因为会话不再存在。