繁体   English   中英

更新具有特定条件的行时是否需要事务

[英]Do I need a transaction when updating a row with a specific condition

我正在做一个小项目,我想将表格中的某些项目标记为“已声明”。

所以大多数物品都会有一个claim_id = NULL,当我想认领一个物品时,我会调用这个命令来更新下一个可用的物品:

update ci_items
set claim_id = ?
where claim_id IS NULL 
order by id 
LIMIT 1;

我认为这应该总是更新下一个可用的项目,或者如果所有项目都已被认领,则什么都不更新。 在 web 应用程序的上下文中,2 个 db 连接可以同时运行,是否有任何风险同时声明一个项目两次,一个 claim_id 覆盖前一个?

我想我可以使用事务,但表结构目前是 MyISAM,我认为不支持事务

您向我们展示的内容效果很好。 单个 SQL 更新查询在其持续时间内具有隐式事务(也称为“自动提交”)。

Go 为它。

在设计和构建应用程序时,不要停止问自己这种原子性、一致性、隔离性、持久性 ( ACID ) 问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM