您的位置:程序门 -> db2 -> 基础类



求助:有一个sql的句子


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


求助:有一个sql的句子
发表于:2008-01-07 19:55:21 楼主
经常看到有个sql的句子,select   .......for   update/delete/insert,没有查到这个句子的作用和用法,求大虾帮解释一下,谢谢!
发表于:2008-01-08 09:59:171楼 得分:0
主要是要db2中隔离级别和锁的各种用法和机制

看一下这篇文章
http://blog.chinaunix.net/u1/33594/showart_327266.html
发表于:2008-01-08 11:14:192楼 得分:0
for       update/delete/insert   是针对数据库的锁,在select的时候加上相对应的锁,比如update锁。
这样会产生互斥的。
发表于:2008-01-09 15:31:023楼 得分:0
不知道我这样理解对不对,就是我在select的时候对我搜索的内容加了(update/delete/delete)锁,使别的事务在这个时候不能进行(update/delete/delete),是这样么?谢谢!
发表于:2008-01-09 15:32:314楼 得分:0
改正:(update/delete/delete)-> (update/delete/insert)
发表于:2008-01-09 16:30:065楼 得分:0
可以这样理解
发表于:2008-01-09 16:52:126楼 得分:0
我的查询结束后,相应的锁自动解锁,是这样么?
发表于:2008-01-09 16:59:547楼 得分:0
准确地说应当是查询语句的事务结束后,相应的锁自动解锁。

对于select       .......for       update/delete/insert,我的理解是db2提供了一种锁升级的机制,这样将查询时的共享锁升级为更新的独占锁。
发表于:2008-01-09 17:38:358楼 得分:0
由于是新手,所以对这方面的了解很有限。看了这篇文章http://blog.chinaunix.net/u1/33594/showart_327266.html还是不太懂,事务中的select   *   from   dbtest   for   update   with   rr,它对别的事务的影响是什么?在未解锁前别的事务只有在update   dbtest是才有影响么?
发表于:2008-01-10 10:09:479楼 得分:0
用for   update这样来查询,就是把select   到的加上update锁,其他的update操作的时候,会因为得不到update锁,进行等待。如果其他的select也有for   update的话   ,就一样需要等待得到update锁,这样就会实现不同事务中select的互斥。


快速检索

最新资讯
热门点击