多线程同时修改sql表单元格

标签 sql multithreading

如果您的表 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/

相关文章:

sql - 未处理的异常错误 - 用户登录失败

sql - 在查询中按参数匹配计数搜索排序?数据库

SQL 查询根据同一表中其他列的值更新列

Java并发-创建后更改可变对象

java - 使用 Java 线程获取和发送消息

sql - 按时间 block 查询记录并分组

sql - 在 ORACLE 中查找上季度的第一天和最后一天

c - 错误读取失败: Success (simple multi-threaded server) c programming

c++ - 处理 Mutex 对象

java - 如何通过JNI分享进度更新?