用户 A 和用户 B 正在修改同一记录的同一列,当 A 完成时,该列的值发生变化。
如何防止 B 覆盖 A 输入的数据或仅显示一些提示?
我之前使用的方法是添加一个标记“更新计数(每次更新增加1)”的列。每次有人更新列之前,他/她都会得到标记,所以当他/她提交更新时,标记将与数据库进行比较,当不同时,有人更改了它。
还有其他想法吗?
用户 A 和用户 B 正在修改同一记录的同一列,当 A 完成时,该列的值发生变化。
如何防止 B 覆盖 A 输入的数据或仅显示一些提示?
我之前使用的方法是添加一个标记“更新计数(每次更新增加1)”的列。每次有人更新列之前,他/她都会得到标记,所以当他/她提交更新时,标记将与数据库进行比较,当不同时,有人更改了它。
还有其他想法吗?
我假设如果数据已更改,您希望用户 B 提交失败。
您可以使用此模式:
另一种模式是这样的:
这是使用乐观并发事务控制(https://en.wikipedia.org/wiki/Optimistic_concurrency_control)时数据库自己做什么的程序化表示。