♣  

题目         部分

在Oracle中,SELECT ... FOR UPDATE加的是什么锁?


     


♣  

答案部分          



SELECT ... FOR UPDATE语句的语法如下:

1SELECT ... FOR UPDATE [OF column_list][WAIT n|NOWAIT][SKIP LOCKED];

 

其中,这个OF子句在涉及到多个表时,具有较大作用。若不使用OF指定锁定的表的列,则所有表的相关行均被锁定。若在OF中指定了需修改的列,则只有与这些列相关的表的行才会被锁定。WAIT子句指定等待其他用户释放锁的秒数,防止无限期的等待。

“使用FOR UPDATE WAIT”子句的优点如下:

① 防止无限期地等待被锁定的行

② 允许应用程序中对锁的等待时间进行更多的控制

③ 对于交互式应用程序非常有用,因为这些用户不能等待不确定的时间

④ 若使用了SKIP LOCKED,则可以越过锁定的行,不会报告由wait n引发的“资源忙”异常报告

在Oracle 10g之前,SELECT ... FOR UPDATE获取的是2级TM锁,而从Oracle 10g开始,SELECT ... FOR UPDATE获取的是3级TM锁。

©著作权归作者所有:来自51CTO博客作者小麦苗DB宝的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 教你如何在 Linux 中锁定和解锁多个用户
  2. MySQL 查询语句执行顺序以及On与Where条件过滤的区别
  3. 运维少年系列 python and cisco (4)
  4. 一句话锁定MySQL数据占用元凶
  5. Android(安卓)SurfaceHolder处理SurfaceView的画图
  6. Android(安卓)SQLite数据库使用INTO子句创建新表时报错
  7. sqlite使用
  8. Android判断当前是否处于屏幕锁定状态
  9. android操作SQLite

随机推荐

  1. php检查变量是否存在
  2. 使用 PHP 实现 LRU 缓存淘汰算法
  3. php上传文件失败
  4. php检测网站是否正常打开
  5. 使用 PHP Masked Package 屏蔽敏感数据
  6. php设置错误级别
  7. php加载不出图片
  8. PHP 高性能 Excel 扩展 1.2.7 发布
  9. php截取字符串不乱码
  10. php跳转不改变浏览器地址