我正在尝试向站点添加记录锁定。这不是数据库锁定,我有两个进程同时编辑同一条记录,而是两个用户同时编辑同一条记录。情况如下:
我需要能够锁定一个记录,而一个人正在编辑它,以便其他人可以在同一时间更改记录(因此造成混乱)。可能发生的情况是用户A开始编辑记录。同时(在用户A保存记录之前),用户B开始编辑记录。现在,用户A用值为“0001”的字段\u A保存记录。现在用户B正在查看和编辑一个过时版本的记录。然后用户B保存值为“0002”的记录。数据库的值为0002。
我可以理解发生了什么,但是用户很难计算出DB中的值是0002而不是0001。在我的例子中,他们使用这个数字将在线数据库中的记录与另一个记录相关联。当这种情况发生时,他们将在另一个系统中得到2条记录,而在联机系统中得到1条记录。
我的想法是通过在字段中输入用户的id来“锁定”一个记录。当0时,它未锁定&燃气轮机;0已锁定。
以下是我对这件事的看法:
-
当用户单击某个记录上的编辑时,他们将收到该记录的锁。
-
他们将有这个锁最多X分钟(可能30)。原因是单击“上一步”按钮而不是“保存”或“取消”。
-
-
要在不保存的情况下移除锁,他们需要单击编辑页面上的“解锁”(或类似按钮)。我想取消,但我希望他们能够取消,仍然持有锁。
-
-
管理员可以移除一个记录的锁,以防它全部崩溃。
-
-
添加一个脚本,用于检查已锁定超过30分钟的记录并将其解锁(可能会向锁定该记录的用户发送电子邮件)。
我想知道的是,是否有任何案件,我错过了会造成悲伤,或如果你有任何建议,如何做到这一点?
注意:我使用PHP和MySQL,它是一个web应用程序。我也不认为数据库中的记录锁定是我所需要的。
--补充:来自
Dan Hulton