首页 > 解决方案 > sql同时更新

问题描述

我正在尝试向我的应用程序添加一个喜欢和不喜欢的按钮,并且后端在 SQL 上运行,我已经完成了我的研究,并且我在某处读到它将处理同一个表和不同行中的更新,但我计算了在“SELECT”查询之后喜欢,然后我更新值,那么如果有人同时喜欢它并且当它要更新它时值为 +1,会发生什么?它会更新到+2还是保持不变?谢谢

标签: sql

解决方案


您可以在单个查询中执行此操作:

    UPDATE items SET likes = likes + 1 WHERE item_id = :id;

假设您使用的是支持事务的数据库,该语句将作为事务运行,因此是孤立的。

如果您在单独的查询中选择、修改然后更新,那么您会遇到您描述的并发更新问题,其中一个用户的更改可能会以不幸的交错覆盖另一个用户的更改。

可以使用锁来确保没有错误的交错,但这会增加复杂性,并可能会出现并发错误。


推荐阅读