签到成功

知道了

CNDBA社区CNDBA社区

oracle select for update用法

2022-07-02 22:31 1533 0 原创 oracle
作者: hbhe0316

select … for update查询
select查询是不加锁的,select…for update是会加锁的,而且是悲观锁,但是在不同查询条件时候加的锁的类型(行锁,表锁)是不同的。http://www.cndba.cn/hbhe0316/article/108521http://www.cndba.cn/hbhe0316/article/108521http://www.cndba.cn/hbhe0316/article/108521

http://www.cndba.cn/hbhe0316/article/108521
http://www.cndba.cn/hbhe0316/article/108521

SQL>   select * from t1 where id = 1 for update;

        ID NAME
---------- ------------------------------
         1 a

开启另外一个session,发现以及Hang住

http://www.cndba.cn/hbhe0316/article/108521

SQL> update t1 set id = 11 where id = 1;

1.for update 是把所有的表都锁点 for update of 根据of 后表的条件锁定相对应的表
2.for update是数据库级别的悲观锁。用户锁定for update的时候,其他用户无法进行修改。
3.select .. for update对于一个sqlmap中的一个查询的话,是在一个事务的。如果这个事务只有这一个查询for update操作。则不起作用。
如果把这个查询语句放在事务里面。事务没有完全提交时,其他的update是不能访问for update锁定的数据的。
4.select .. for update适用于查询之后的更新。避免脏数据的问题。如在一个事务中,先对修改的数据select … for update然后在修改。只要这个事务没有结束,
其他任何地方是不能修改或删除这个数据的。

http://www.cndba.cn/hbhe0316/article/108521
http://www.cndba.cn/hbhe0316/article/108521http://www.cndba.cn/hbhe0316/article/108521http://www.cndba.cn/hbhe0316/article/108521

版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
hbhe0316

hbhe0316

关注

1.只有承认无知,才能装下新的东西; 2.进步来自一点点滴滴的积累; 3.广博让你更优秀,而专业让你无法替代; 4.挫折和失败能够转换为一种财富。

  • 889
    原创
  • 1
    翻译
  • 13
    转载
  • 24
    评论
  • 访问:2589883次
  • 积分:1523
  • 等级:核心会员
  • 排名:第6名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ