MySQL 的自动提交,多人一开始都没注意到。但用得久了你会发现,自动提交这事儿其实挺烦人的。start transaction;这个命令就比较好用,能隐式地关闭自动提交,重点是——不会动系统变量@@autocommit,安全稳妥。

隐式关闭最大的好处就是你不用管其它线程会不会受影响,写完逻辑直接commitrollback,操作一气呵成。适合你在写批量、事务逻辑的时候用,避免了事务一不小心提前提交的尴尬。

之前我也试过直接改@@autocommit,但系统变量一改,全局都受影响,坑多。尤其多人协作的项目里,建议你老老实实用start transaction;。简单明了,也容易排查问题。

对比来看,方法二更灵活,适合那些不想动全局配置但又控制事务提交节奏的场景。用起来比较放心,逻辑清晰。

哦对了,感兴趣你也可以看看MySQL 数据库锁机制:隐式锁与显式锁这篇文章,对事务控制理解更透彻一点。

如果你写 SQL 写得比较多,或者平时项目里会批量操作,推荐你多试试这个方法。用熟了,出错率也会降不少。