当前位置:首页>网络学院>程序开发>Visual Basic教程>文章内容
广告位出租 广告位出租

RDO 的建立记录集(二)

[ 来源: | 作者: | 时间:2007-06-26 | 收藏 | 推荐 ] 【

广告位出租

上回提到了OpenResultset方法,可以有以下数种型态的Cursor
rdOpenForwardOnly  rdOpenStatic rdOpenDynamic rdOpenKeyset
也提及了SQL Server/ Informix的Server/Client端Cursor与之搭配的记录,再来讨论
OpenResultset的 LockType,这LockType的设定主要是为了多人同时使用的环境而设。

rdConcurReadOnly 1      (预设值)唯读的。
rdConcurLock     2      悲观的平行。
rdConcurRowVer   3      基於资料列 ID之乐观的平行。
rdConcurValues   4      基於资料列值之乐观的平行。
rdConcurBatch    5      使用批次模式更新之乐观的平行处理。为每一笔成功地被
                        更新的资料列传回 Status 值。

而我们这里针对的是前4者加以讨论。
如果是rdUseODBC 的Client端Cursor,上回提过,它只能有rdOpenForwardOnly 及
rdOpenStatic两种型态(使用其他型态时,可能也不会有误,但行为只有这两种模式)
而使用的锁定模式呢,只能是rdConcurReadOnly/rdConcurValues 而其他的锁定模式呢
使用下去,可能会有错,也可能没有,那要看ODBC Driver的厂商如何写,但其锁定行模
式应只有上述说的这两种(rdConcurBatch我未研究)。

如果是Server端的Cursor(rdUseServer),那才能使用这前四种锁定方式;rdConcurReadOnly
不用多说,那代表该Cursor不是Update Cursor,只能读取。而rdConCurLock是悲观的锁
定,根据我的Testing ,SQL Server6.5 其悲观的锁定的特性是:只要在OpenResultset
时,者就会在RowSetSize数目的列上做一个Update Lock,如果是Page Lock的状态,那
至少会把各个Row所在的Page上的列全Lock住,因此Lock住的列可不只RowSetSize的数目
。当然,这只是某些情况之下会如此,SQL SERVER会看实际的情况来Handle Lock,说不
定会Lock整个Table也不一定。这里要提一下Lock的种类:

Share Lock : 同时之间有很多Procee可以Share Lock住某一笔资料,一般读取时有时会
             在上面做个Share Lock(并不是每一种都会,要看我们先前的设定)
Exclusive Lock : 某一笔Record不能有其他的任何Lock(含Share Lock)时,才能Lock成,
             一般在update/delete等动作时,会先Exclusive Lock该笔,成功时才能再
             做往後的动作。
Update Lock:或称Promotable Lock,这个Lock是为了Current Record有所更动而设计,
            它允许Share Lock与之共存,但不可以有其他的Exclusive/Update Lock存
            在。它在真的要Update时会把Update Lock提升成Exclusive Lock,所以啦,
            在它真的要Update前於其上的所有Lock(包括Share Lock)都要解除才能成功。
+----------------+----------------------------------------------------
|                |           目前已有的Lock                          |
|----------------+---------+-----------+------------+----------------|
|想要完成之Lock  | no lock | Share Lock| Update Lock| Exclusive Lock |
|----------------|---------+-----------+------------+----------------|
|share lock      |   可         可          可            不可       | 
|update lock     |   可         可         不可           不可       |
|exclusive lock  |   可        不可        不可           不可       |
|----------------+---------------------------------------------------+

以下我暂且用Row Lock来解释一些东西,读者可另外推及Page Lock。

(阅读次数:

返回顶部
共2页: 上一页 1 [2] 下一页  
广告位出租

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]