ADO中事务处理 是如何处理两个用户同时在更新一条记录。如何控制。谢谢

PBbaby 2001-09-11 08:38:24
...全文
153 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztchen 2001-09-12
  • 打赏
  • 举报
回复
朋友,这是一个相当难解决的问题,是鱼和熊掌不可兼得的问题。
首先,最安全最容易的办法就是用悲观锁,即一个人在打开表的时候其他人都不能打开。这样无论写程序还是数据库的设计都很简单。
另一种方法是使用乐观锁,即同时可让多人打开表并修改内容。这样的做法对于程序控制和数据库结构的要求都很高,因为数据库冲突是一个大问题。但我大多使用的都是此类控制方法,需把表的字段分细,根据用途宁可多建表,并在各个表之间建立较为复杂的关系。如此达到降低冲突的可能性。
使用ADO的控件绑定功能非常不错,几乎包含了各种解决冲突的机制,程序控制所需做的就是处理一些错误情况,你可以截获错误来让用户选择冲突时的处理方法,如是覆盖数据还是不覆盖。
SwordGrass 2001-09-12
  • 打赏
  • 举报
回复
up
itjune 2001-09-12
  • 打赏
  • 举报
回复
看具体业务的需要,对数据库进行设计。
数据库不同处理的方法也不同,具体情况具体对待
hhdsq 2001-09-12
  • 打赏
  • 举报
回复
gz
szwanghuan 2001-09-12
  • 打赏
  • 举报
回复
重起服务器
PBbaby 2001-09-12
  • 打赏
  • 举报
回复
up
PBbaby 2001-09-11
  • 打赏
  • 举报
回复
to zzh
那对于多条记录 时间长,而且是频繁使用的数据表 死锁的几乎是必然的。
那如何办。

PBbaby 2001-09-11
  • 打赏
  • 举报
回复
我的迷惑在于
Ado Recordset 在连接RollBack 后不能恢复以前的数据
AFIHA 2001-09-11
  • 打赏
  • 举报
回复
同意楼上
zzh 2001-09-11
  • 打赏
  • 举报
回复
在对一条记录进行操作之前,先用一个事务来进行锁定该记录,如果锁定失败,则不进行操作,在成功的前提下,执行操作,如果失败,则回滚,成功则提交,这样就可以进行控制了,不过,这样做的后果可能会产生死锁,需要调整数据库中锁的设置。
PBbaby 2001-09-11
  • 打赏
  • 举报
回复
up

7,763

社区成员

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

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