MySQL

没写 BEGIN 的一条 UPDATE,也是一笔事务

教材讲行锁时总写 BEGIN ... COMMIT,我一度以为不写就没有事务。

其实默认 autocommit = 1,每条语句自己就是一笔事务:执行完自动提交,行锁跟着放掉。教材写 BEGIN,只是为了把事务撑开,让你看得到锁还在。

反过来也要小心:一旦在事务里,锁就要等到 COMMIT / ROLLBACK 才放,不是语句执行完就放。

esc