美文网首页
sql中的for update

sql中的for update

作者: 林伟成 | 来源:发表于2019-05-24 23:01 被阅读0次

解释:

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

原文:https://blog.csdn.net/qq_39632561/article/details/80061364

版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章

  • sql中的for update

    解释: for update是在数据库中上锁用的,可以为数据库中的行上一个排它锁。当一个事务的操作未完成时候,其他...

  • 从0到1学习网络安全 【MySQL基础-MySQL UPDATE

    MySQL UPDATE 查询 如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE ...

  • 不常见的sql

    不常见的sql 一条sql执行多个update 一条sql执行多个update CASE WHEN用法

  • SQL UPDATE 语句

    UPDATE 语句用于更新表中已存在记录 SQL UPDATE 语法 UPDATA table_name SET ...

  • SQL初认识——19:修改数据之UPDATE

    如果要更新数据库表中的记录,我们就必须使用UPDATE语句。 update-sql UPDATE语句的基本语法是:...

  • SQL应用小技巧

    /* 用EXCEL中的数据更新 SQL 中的表 */ UPDATE Dest set GongShang = (s...

  • BI-SQL丨UPDATE

    UPDATE语句 UPDATE语句在SQL的查询中,通常可以用来修改表中的数据,即我们经常听说的“改”。 在Pow...

  • mysql sql层分析 优化过程分析

    sql层 sql层接口接收sql语句 判断sql语句类型dml update select insertddl ...

  • AX 2012 : set auto shutdown in o

    batch update the auto shutdown in SQL

  • update sql

    1.一个经常忘记的sql的update用法,两个表之间存在关联,将一个表的数据值赋值到另一个表,举例如下: 2.对...

网友评论

      本文标题:sql中的for update

      本文链接:https://www.haomeiwen.com/subject/rpsozqtx.html