如果您的表 BankAccount 有一列 Amount 并且特定行的该列的值可以同时被多个线程修改 所以它可能会发生,以便最后一个设置值的人获胜。
你通常如何处理这种情况?
更新:我听说在 MSSQL 中有更新锁 UPDLOCK 可以锁定正在更新的表或行,我可以在这里以某种方式吗?
最佳答案
引用当前值的更新语句将防止覆盖。所以,与其做类似
的事情SELECT Amount FROM BankAccount WHERE account_id = 1
(它返回为 350,你想减去 50)...
UPDATE BankAccount SET Amount = 300 WHERE account_id = 1
做
UPDATE BankAccount SET Amount = Amount - 50 WHERE account_id = 1
关于多线程同时修改sql表单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1873440/