谁能帮我说说LockType中的LockPessimistic和LockOptimistic的区别????

Gutta 2005-12-08 09:05:26
LockPessimistic(悲观锁定):为最保守锁定,将行中存放的字段敷值时,可以锁定此行,知道用Update来更新才解除。但相同的行在存储区中(同一数据页)也被锁定。

Optimistic(乐观锁定):可以正确得更新数据,其检测在调用UPdate时才锁定。

-----------------------------------------------

以上是定义,我想问的是:
如果我有若干个记录集(4个),对一个表中的不同记录(肯定是不同的记录)进行同时更新操作,应该采用的是哪个锁定方法???

悲观锁定和乐观锁定在锁定时是对筛选出来的某些“记录”的锁定呢?还是对整张表的锁定呢?????

如果说是对筛选记录的锁定,那么我用这两个锁定方式都可以实现对这张表的不同记录的同时更新了吗???


请教了~~!!!!!
...全文
122 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
colorslife 2005-12-18
  • 打赏
  • 举报
回复
用了adLockReadOnly不是不能修改数据了?
关注……
daisy8675 2005-12-09
  • 打赏
  • 举报
回复
adLockReadOnly才是锁定啊
Gutta 2005-12-08
  • 打赏
  • 举报
回复
Dim cnn As ADODB.Connection
Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset


Private Sub Command1_Click()
rs1.Open "Select * From T1 Where IDS=1", cnn, adOpenDynamic, adLockPessimistic
rs1("NAMES") = "1111" //应该是锁定了记录了
''''''''''''''''''''''''''''''''''''''''''''''''''''''
rs2.Open "Select * From T1 Where IDS=1", cnn, adOpenDynamic, adLockPessimistic
rs2("NAMES") = "2222"
rs2.Update //为何用其他记录集来更新这个记录却依然可以???
rs2.Close
''''''''''''''''''''''''''''''''''''''''''''''''''''''
rs1.Update
rs1.Close

End Sub

Private Sub Form_Load()
Set cnn = New ADODB.Connection
cnn.Open "DSN=TEST"
Set rs1 = New ADODB.Recordset
Set rs2 = New ADODB.Recordset
End Sub

Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
cnn.Close
Set rs1 = Nothing
Set rs2 = Nothing
Set cnn = Nothing
End Sub


---------------------

这个测试程序中的Command1_Click中,为什么我把那个记录先锁定以后,用其他记录集来再对这个记录操作却依然可以???

不解。。。
Gutta 2005-12-08
  • 打赏
  • 举报
回复
顶!!!

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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