假设有个表单products ,里面有id 跟name 二个栏位,id 是主键。
例1: (明确指定主键,而且有此数据,row lock)code
SELECT * FROM products WHERE id='3' FOR UPDATE;
例2: (明确指定主键,若查无此数据,无lock)blog
SELECT * FROM products WHERE id='-1' FOR UPDATE;
例2: (无主键,table lock)table
SELECT * FROM products WHERE name='Mouse' FOR UPDATE;
例3: (主键不明确,table lock)class
SELECT * FROM products WHERE id<>'3' FOR UPDATE;
例4: (主键不明确,table lock)表单
SELECT * FROM products WHERE id LIKE '3' FOR UPDATE;
乐观所和悲观锁策略
悲观锁:在读取数据时锁住那几行,其余对这几行的更新须要等到悲观锁结束时才能继续 。
乐观所:读取数据时不锁,更新时检查是否数据已经被更新过,若是是则取消当前更新,通常在悲观锁的等待时间过长而不能接受时咱们才会选择乐观锁。数据