开启一个事务之后
如果A事务当中有语句加入了一个排它锁,那么A事务没有提交之前。其他事务只能读取这个而不能写入或者更新
A事务:
start transaction ; select * from table_name where id =1 for update ;
B事务:
update table_name set count = count - 1 where id= 1;
如果A事务没有执行提交的话,B事务会阻塞直到A事务提交之后才会执行。
如果A事务这个id是主键的话,INODB引擎下是会产生一个行级锁,就是能对其他行和列进行操作。否者的话是一个表锁。
S锁
事务A对数据1加了S锁之后,只能对其进行读取而不能更改。 在事务A提交之前,其他事务也是只能读取不能更改。
也就是其他事务也只能加S锁,而不能加排他锁。