sql - sql同时更新
问题描述
我正在尝试向我的应用程序添加一个喜欢和不喜欢的按钮,并且后端在 SQL 上运行,我已经完成了我的研究,并且我在某处读到它将处理同一个表和不同行中的更新,但我计算了在“SELECT”查询之后喜欢,然后我更新值,那么如果有人同时喜欢它并且当它要更新它时值为 +1,会发生什么?它会更新到+2还是保持不变?谢谢
解决方案
您可以在单个查询中执行此操作:
UPDATE items SET likes = likes + 1 WHERE item_id = :id;
假设您使用的是支持事务的数据库,该语句将作为事务运行,因此是孤立的。
如果您在单独的查询中选择、修改然后更新,那么您会遇到您描述的并发更新问题,其中一个用户的更改可能会以不幸的交错覆盖另一个用户的更改。
您可以使用锁来确保没有错误的交错,但这会增加复杂性,并可能会出现并发错误。
推荐阅读
- python - 无法使用 create_tweet() 发布推文
- elasticsearch - 得到响应代码“400”在 logstash 中的 URL 联系 Elasticsearch
- python - 将日期转换为具有相同值的十六进制
- python - 如何使用 for 循环重复函数
- python - 只有 size-1 的数组可以转换为 Python 标量 Scikit Learn
- c# - 由于 XmlSerialization (sgen.exe) 无法在 Visual Studio 2022 中构建项目并且无法禁用
- snowflake-cloud-data-platform - 将雪花数据卸载到不带扩展名/文件格式的 s3
- partitioning - 当在事件中心 Azure 的同一分区中重试新事件时,会发生什么情况?
- java - JAVA笛卡尔形状绘图仪
- c++ - 不能使用 MinGW 包含 SDL_ttf.h