怎样能实现当一个用户在修改一条记录的时候其他用户不能对该条修改进行修改,怎么能避免“脏数据”呢?

evilzydar 2004-08-06 09:23:11
怎样能实现当一个用户在修改一条记录的时候其他用户不能对该条修改进行修改,怎么能避免“脏数据”呢?
...全文
104 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
starsoulxp 2004-08-06
  • 打赏
  • 举报
回复
在修改之前先锁定它,就不会有冲突了。
chenyu5188 2004-08-06
  • 打赏
  • 举报
回复
http://dev.csdn.net/develop/article/24/24978.shtm
gzhiceberg 2004-08-06
  • 打赏
  • 举报
回复
用悲观锁
adLockPessimistic
yyuyes 2004-08-06
  • 打赏
  • 举报
回复
忘记说了,使用事务必须DBMS支持
yyuyes 2004-08-06
  • 打赏
  • 举报
回复
必要的时候,你可以考虑使用事务:
err.clear
with conn
.open strConn '打开连接
.begintrans '事务开始
.execute "insert into ......"
.execute "update ......."
end with

if err then
conn.rollbacktrans '回滚
else
conn.CommitTrans '提交
end if
yyuyes 2004-08-06
  • 打赏
  • 举报
回复
打开 Recordset 之前先设置 LockType 属性,以指定提供者打开它时使用的锁定类型。

如果 CursorLocation 属性设置为 adUseClient,则不支持 adLockPessimistic 设置。如果设置了不支持的值,将不产生错误,而使用所支持的最近似的 LockType。

ADO中常用的LockType值有:

adLockReadOnly
adLockPessimistic
adLockBatchOptimistic
adLockOptimistic
bluesky23 2004-08-06
  • 打赏
  • 举报
回复
以独占的方式打开该表也可以。
落伍者 2004-08-06
  • 打赏
  • 举报
回复
用“排它锁”修改数据
TNT1900 2004-08-06
  • 打赏
  • 举报
回复
执行“select field1 from Table1 for update”即可。--它的作用就是在你关闭该连接或提交之前保持独占 Table1。
roger_xiong 2004-08-06
  • 打赏
  • 举报
回复
還可以知道是那個用戶使用,對網羅環境下的軟件有著比較特殊的意義.
roger_xiong 2004-08-06
  • 打赏
  • 举报
回复
我的做法是在資料庫中建立一個標如 NetControl
當麼一個用戶修改某一條紀錄的時候,在 NetControl 表中紀錄該用戶的用戶名\和正在修改的紀錄的表名和ID號.

每一個用戶在修改紀錄前都先去檢查一下,要修改的紀錄在 NetControl 表中有沒有紀錄,有紀錄的話,就提示該紀錄被某某用戶修改,請等待的消息.

用這個辦法還可以限制某一個窗體或其他控件甚麼的同一時刻只能由一個或幾個用戶使用,比較自由阿.

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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