没查到相关资料
是我理解错了吗
大多数书 教程都说的是事务的情况
然后在事务中,到底要不要手动写 FOR UPDATE 或 LOCK IN SHARE MODE 来加锁呢?还是说 mysql 会自动根据查询语句的类别来加锁?
1
louettagfh 2021-02-06 09:40:49 +08:00
你是指没有显式的 begin 吗?
update 语句依然需要排它锁. 事务中写不写 FOR UPDATE 和 LOCK IN SHARE MODE 取决于你的需求啊. |
2
zxCoder OP @louettagfh 对 就是没有显式的开启事务,这时候 update 会自动当做一个事务吗?
所以事务中其实是不会自动加锁的吗?必须自己手动显式加锁?(对于 innodb ) |
3
lizuoqiang 2021-02-06 11:42:59 +08:00
session 1:
#关闭自动提交 set autocommit = 'OFF'; #更新一条记录 update author set name = 'first_new' where id = 1; session 2: #关闭自动提交 set autocommit = 'OFF'; #更新一条记录 update author set name = 'first_new_2' where id = 1; session2 会等待 session1 的锁释放而导致超时 所以一般的事物不需要显示的加锁 |
4
louettagfh 2021-02-06 19:15:15 +08:00
|