sql中的forupdate
解释:
for update是在数据库中上锁⽤的,可以为数据库中的⾏上⼀个排它锁。当⼀个事务的操作未完成时候,其他事务可以读取但是不能写⼊或更新。
例⼦:
⽐如⼀张表三个字段 , id(商品id), name(商品名字) , count(数量)
当商品抢购时候会显⽰剩余商品件数,如果并发量⼤的时候,商品⾃减的值可能不准确。所以当我们在⼀个事务中对count字段进⾏修改的时候,其他事务应该只能读取指定id的count,⽽不能进⾏update等操作。这个时候就需要⽤到for update.
sql语句:
start transaction ;
select * from table_name where id =1 for update ;
update table_name set count = count - 1 where id= 1;
此时如果另⼀个事务也想执⾏类似的操作:
start transaction ;
select * from table_name where id =1 for update ;
//下⾯的这⾏sql会等待,直到上⾯的事务回滚或者commit才得到执⾏。
update table_name set count = count - 1 where id= 1;
*注:当选中某⼀个⾏的时候,如果是通过主键id选中的。那么这个时候是⾏级锁。
其他的⾏还是可以直接insert 或者update的。如果是通过其他的⽅式选中⾏,或者选中的条件不明确包含主键。这个时候会锁表。其他的事务对该表的任意⼀⾏记录都⽆法进⾏插⼊或者更新操作。只能读取。
---------------------
作者:宇宙意志
来源:CSDN
sql中update什么意思版权声明:本⽂为博主原创⽂章,转载请附上博⽂链接!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论