测试数据库
https://github.com/datacharmer/test_db
select for update 锁表情况
对于表products,有两列id和name,id是主键列,name是索引
- 例1:where条件明确指定主键,并且该行存在,则为row lock
SELECT * FROM products WHERE id='3' FOR UPDATE;
- 例2:where条件不明确指定主键,则为通过索引列扫描到的数据结果都会lock
SELECT * FROM products WHERE name='Mouse' FOR UPDATE;
- 例3:where条件不是索引列,id不是索引,不是主键,则为所有的记录lock
SELECT * FROM products WHERE id<>'3' FOR UPDATE;