DBRecordset1.CursorType = adOpenDynamic DBRecordset1.LockType = adLockPessimistic Set DBRecordset1.ActiveConnection = DBConnect DBRecordset1.Source = "select * from area where ID=6" DBRecordset1.Open DBRecordset2.CursorType = adOpenDynamic DBRecordset2.LockType = adLockPessimistic Set DBRecordset2.ActiveConnection = DBConnect DBRecordset2.Source = "select * from area where ID=6" DBRecordset2.Open在一个过程中,就是这样用,这两个记录集都能正确的打开,也能修改和保存. 帮帮忙吧.
有人知道像carefulman怎样实现吗??
假如数据库不支持事务,或者commit的过程中网络中断? 事务都无能为力
我的解决方案描述太少所以“???” 我想在读取的时候用 select * from 表名 where Flag=0 and 条件 然后确认读出后用:update 表名 set Flag=1 where 条件 处理完后用:update 表名 set Flag=0 where 条件 大概就是这几句吧! 我想处理程序是:updata 表名 set Flag=0
DBRecordset1.LockType = adLockPessimistic
Set DBRecordset1.ActiveConnection = DBConnect
DBRecordset1.Source = "select * from area where ID=6"
DBRecordset1.Open
DBRecordset2.CursorType = adOpenDynamic
DBRecordset2.LockType = adLockPessimistic
Set DBRecordset2.ActiveConnection = DBConnect
DBRecordset2.Source = "select * from area where ID=6"
DBRecordset2.Open在一个过程中,就是这样用,这两个记录集都能正确的打开,也能修改和保存.
帮帮忙吧.
我想在读取的时候用 select * from 表名 where Flag=0 and 条件
然后确认读出后用:update 表名 set Flag=1 where 条件
处理完后用:update 表名 set Flag=0 where 条件
大概就是这几句吧!
我想处理程序是:updata 表名 set Flag=0
类似的问题我也早就问过,一直没有解决,现在买了本书,看到一半:
1、锁定操作必需在事务中完成
2、跟事务隔离的级别有关,参考:SET TRANSACTION ISOLATION LEVEL,如果不设置,事务默认的是共享锁定
3、继续研究中,以上供参考,大家一起研究,搞清楚后我会在自己的帖子里放个例程,然后结贴。
在数据库中建立数据表记录已经加锁的记录
在对记录进行修改时先判断记录是否已经加锁,如果没有则先加锁,修改完毕后开锁
如果记录事先已经加锁则判断是不是自己加的锁,如果时别的用户加的锁则不能操作。
回复人: chsl918(二雷) ( ) 信誉:100 2002-1-23 10:27:20 得分:0
这是我解答怎样实现读取一条记录时锁定这条记录的答案,我想也可以 解决这个问题吧!供你参考!前提是实现起来比较麻烦。
我想最简单也是最危险的方式是建立一个标志位!当读取这条记录的时候把它的标志位置成1,不读了再置0,当读取时加上条件。我所说的危险是,如果再你读取的时候机器死机了或者断电什么的,这条记录就不好处理了,所以我想还应当有相应的处理程序比如清理标志的程序等等,看你自己怎么处理了!
=============================================================
上面的两种方法是一样的,只是实现方式不同,当时缺点都是:
假设系统、网络出现异常,那么单独使用这种方法会失败,就会产生死锁所以在服务端需要有一个服务来监测数据库上连接的用户在什么状态。
==================================
回复人: bc3() ( ) 信誉:100 2002-1-23 9:35:30 得分:0
假如数据库不支持事务,或者commit的过程中网络中断? 事务都无能为力
这句话等于没说,在提交失败的时候,事物没有成功,那么至少对于数据没有产生任何影响,没什么大碍吧,最多再来一次。=======================================================
回复人: fuxc(Michael) ( ) 信誉:89 2002-1-23 12:14:05 得分:0
http://www.csdn.net/expert/topic/447/447887.shtm
类似的问题我也早就问过,一直没有解决,现在买了本书,看到一半:
1、锁定操作必需在事务中完成
2、跟事务隔离的级别有关,参考:SET TRANSACTION ISOLATION LEVEL,如果不设置,事务默认的是共享锁定
3、继续研究中,以上供参考,大家一起研究,搞清楚后我会在自己的帖子里放个例程,然后结贴。
这可能就是一种解决的方法 。
前提条件就是你对事物很熟悉,如果使用ado那么你要熟悉在事务处理的时候的异常信息, and 你必须非常清楚怎么样的情况会出现怎么样的异常。
但是,这种解决的方式可能不是你所需要的。
从你说的,你可能需要在两个事物之间确定状态,这个是办不到的,因为正好在两个事务管辖之外。而一般事务处理都是这样,一个动作中就包含了开始事务、提交事务(或者回滚)
=================
而真真的解决方法是和你系统实现的方式有关。不是很清楚你的系统结构所以很难确定。