- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
A lost update occurs when two different transactions are trying to update the same column on the same row within a database at the same time. Typically, one transaction updates a particular column in a particular row, while another that began very shortly afterward did not see this update before updating the same value itself. The result of the first transaction is then "lost", as it is simply overwritten by the second transaction. --https://morpheusdata.com/blog/2015-02-21-lost-update-db
最佳答案
你有两种可能
在乐观锁定的情况下,您制定更新语句,以便在选择和更新之间发生更改时,不会发生更新。在您的情况下,您可以使用:
UPDATE product set quantity = 10
where id = 1 and quantity = <original quantity -- 7>
如果没有更新预期的记录数,通常是1条,因为另一个进程同时更新了数量,那么你必须在更新前重复选择。你怎么知道有多少条记录被更新了?这取决于您用于执行数据库请求的技术,但根据我的经验,每个 Sql-Dbms 都会将该信息返回给其客户端。
关于mysql - 如何在 MySQL 中使用事务来避免 "lost updates"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46315232/
我是一名优秀的程序员,十分优秀!