我有一个网页,用户可以在其中创建/打开项目并查看/更新其信息。信息存储在MySQL数据库中。用户可以与他们的合作伙伴共享他们自己的项目,以便他们的合作伙伴也可以编辑他们的项目。在这种情况下,如果两个或多个用户同时打开一个特定项目,他们可以覆盖彼此的更新。因此,我需要开发一个可靠的代码来防止这种并发更新,并为用户提供适当的消息。解决此类案件是否有任何模式或最佳做法? 谢谢
答案 0 :(得分:4)
一种简单的方法是在每条记录上放置一个序列号,当记录被更改时,该序列号会递增。当页面加载时,您将序列号包含为隐藏<input/>
,并将其与您的更新查询一起发送:
UPDATE table
SET field1 = '?', field2 = '?', sequence = sequence + 1
WHERE id = ? AND sequence = ?;
运行查询后,您可以看到修改了多少行(您的数据库API应该提供一种方法来检索&#34;受影响的行数&#34;查询后)。如果为零,则找不到记录ID,或者另一个用户修改了记录(sequence = ?
子句不匹配)。