在实际开发中,我们有时候会涉及到使用select ..... for update这样的sql语句。我们先来介绍下这种sql的使用场景。
使用场景
在部分场景里面,由于sql的隔离级别设置不一样,有时候我们需要在查询时看到的数据一定是最新的,同时看到的数据只能自己修改,因此使用for update这种查询进行限制。
到底是锁行还是锁表?
在表中,如果我们的select语句里面where条件全部使用到了索引(主键也是索引的一部分),这时候,这种语句只会锁行。
在表中,如果我们的select语句里面没有where条件,或者where条件里面没有用到索引,这时候,这种语句就是锁表。
还没有评论,来说两句吧...