求助:有一个SQL的句子

wellbright 2008-01-07 07:55:21
经常看到有个SQL的句子,select .......for update/delete/insert,没有查到这个句子的作用和用法,求大虾帮解释一下,谢谢!
...全文
133 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangxiao_jiang 2008-01-10
  • 打赏
  • 举报
回复
用for update这样来查询,就是把select 到的加上update锁,其他的update操作的时候,会因为得不到update锁,进行等待。如果其他的select也有for update的话 ,就一样需要等待得到update锁,这样就会实现不同事务中select的互斥。
wellbright 2008-01-09
  • 打赏
  • 举报
回复
由于是新手,所以对这方面的了解很有限。看了这篇文章http://blog.chinaunix.net/u1/33594/showart_327266.html还是不太懂,事务中的select * from dbtest for update with RR,它对别的事务的影响是什么?在未解锁前别的事务只有在update dbtest是才有影响么?
huoyin 2008-01-09
  • 打赏
  • 举报
回复
准确地说应当是查询语句的事务结束后,相应的锁自动解锁。

对于select .......for update/delete/insert,我的理解是db2提供了一种锁升级的机制,这样将查询时的共享锁升级为更新的独占锁。
wellbright 2008-01-09
  • 打赏
  • 举报
回复
我的查询结束后,相应的锁自动解锁,是这样么?
littleboys 2008-01-09
  • 打赏
  • 举报
回复
可以这样理解
wellbright 2008-01-09
  • 打赏
  • 举报
回复
改正:(update/delete/delete)->(update/delete/insert)
wellbright 2008-01-09
  • 打赏
  • 举报
回复
不知道我这样理解对不对,就是我在select的时候对我搜索的内容加了(update/delete/delete)锁,使别的事务在这个时候不能进行(update/delete/delete),是这样么?谢谢!
yangxiao_jiang 2008-01-08
  • 打赏
  • 举报
回复
for update/delete/insert 是针对数据库的锁,在select的时候加上相对应的锁,比如update锁。
这样会产生互斥的。
littleboys 2008-01-08
  • 打赏
  • 举报
回复
主要是要DB2中隔离级别和锁的各种用法和机制

看一下这篇文章
http://blog.chinaunix.net/u1/33594/showart_327266.html

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧