sql排它锁

1.为什么需要排它锁
事务中,有时我们在操作一条数据时,是不能让其他事务同时去操作的。
如某商品库存数量为1,如果有多个事务对该库存进行减一操作,那么库存可能出现负数。
所以,在某个事务操作时,需要把这个商品的库存锁住,不允许其他事务访问,当事务提交后,解锁,此时其他事务访问到的是操作之后的数据0,不会出现再次扣库存的情况。

2.select .. for update
数据库默认的为共享锁,即多个事务可以同时访问一条数据。
示例如下:
300946-20170918141506431-1103918835.png
使用select .. for update时,只有在一个事务commit后,其他事务才能得到排它锁,继续执行。
示例如下:
300946-20170918141514384-45267030.png
300946-20170918141524759-1016056899.png
select .. for update的事务会争取锁资源,而正常的select不会受锁的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值