实际上,问题是这样的: -
我有一张桌子,说付款。我提供了很少的用于搜索,查看和编辑记录的GUI。现在,如果用户正在尝试编辑记录执行某个特定操作,则需要1分钟来处理。然后另一个用户不能在同一记录上执行该特定操作。
Traditional approach of doing this is, have a column in the table, say _isLocked_. and whenever user is performing that action it should change the value of said column to, say, true. Once the process is completed it should reset the value of the column. Also, just before someone tries to perform the action, it should check the value of the column and notifies the user if the record is locked.
还有什么其他方法可以做同样的事情?
答案 0 :(得分:2)
SELECT FOR UPDATE就是这样。我们通过使用它来获得这种行为。
答案 1 :(得分:2)
作为Vinegar said,SELECT FOR UPDATE
- 接受他的回答,而不是我的回答:)
确保知道用户何时真正想要编辑一行,以及他/她何时完成。根据您的应用程序,您可以打开一个单独的窗口,用户可以在其中进行修改然后确认/取消,这样您就可以执行COMMIT / ROLLBACK。
并确保尝试更改同一行的其他用户不会面临冻结的应用程序,并且必须等待锁定被释放。