单个更新查询所需的事务?

Ton*_*y H 10 mysql innodb transactions

我在InnoDB表上有一个mysql查询,如下所示:

UPDATE items SET qty = qty + 5 WHERE item_id = 1234 LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

我需要为此使用交易吗?不使用交易会发生什么不良事件吗?

Gor*_*off 11

没有什么可以发生的.默认情况下,MySQL在事务中包装所有单个update/insert/delete命令.如果更新中出现问题,则应正确回滚事务.

当您组合多个更改并希望它们全部"同时"或"根本不"生效时,您实际上只需要交易.

您可以在文档中阅读更多相关信息.

  • @Gordon,这个默认交易的隔离级别是什么?如果我们需要`更新t set c = c + 1`,如果10k用户同时运行该语句,我们是否会丢失更新? (2认同)