关于VB中ADO事物嵌套的问题

dong 2000-02-19 03:18:00
请问ADO能否实现事物嵌套?若可以则如何实现?
...全文
240 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dong 2000-02-29
  • 打赏
  • 举报
回复
to cool: GOU的第一种方法就是现成的例子。

dong 2000-02-25
  • 打赏
  • 举报
回复

你所说的第2种方法对函数实行两种封装简单可行;但第一种不成立,早已试过。
DOU 2000-02-21
  • 打赏
  • 举报
回复
你的意思是大事务里有小事务,当大事务回滚时,小事务也回滚,如:

function SmallTrans()
on error goto errHandler
con.BeginTrans ' 小事务开始
...
...
con.CommitTrans ' 小事务结束

errHandler:
con.RollBackTrans ' 出错小事务回滚
end funciton

function BiglTrans()
on error goto errHandler
con.BeginTrans ' 大事务开始
...
call SmallTrans()
...
con.CommitTrans ' 大事务结束

errHandler:
con.RollBackTrans ' 出错大事务回滚
end funciton

如果是如此。
答案是:如果SmallTrans成功执行,BiglTrans中其它部分出错,只能回滚其它部分,SmallTrans不能回滚
解决方法一是如cloud所说,使用MTS,设置COM Object的事务属性,具体参见有关资料。
解决方法二,比较简单

function SmallTransDetail()
... ' 具体的数据库操作,不要有beigntrans ,committrans 等语句
... '也不需err_handler

end funciton


function SmallTrans()
on error goto errHandler
con.BeginTrans ' 小事务开始
call SmallTransDetail()
con.CommitTrans ' 小事务结束
errHandler:
con.RollBackTrans ' 出错小事务回滚
end funciton

function BiglTrans()
on error goto errHandler
con.BeginTrans ' 大事务开始
...
call SmallTransDetail() ‘‘ 不包含begintrans,committrans,rollbacktrans语句
...
con.CommitTrans ' 大事务结束

errHandler:
con.RollBackTrans ' 出错所有事务回滚
end funciton
大致如此,你试试就知道
sunbn 2000-02-20
  • 打赏
  • 举报
回复
ado 的 transaction 是可以嵌套的,(当然可以,否则就该扔掉)
不过在具体使用方式上有讲究。等写好再回复!
dong 2000-02-20
  • 打赏
  • 举报
回复
抱歉,可能问题写的太简单。我所指的事物是指数据库中的transaction。
因为rdo就可以简单实现事物嵌套,但我试了ado却不行。所以这个问题应该与数据源无关。事物的应用很多,最经典的是处理一个银行转帐的要求,而如果其他程序要调用转帐的过程,而且调用的外部程序本身也需要用事物来确保一致性,这时就需要涉及事物的嵌套。
bokei 2000-02-20
  • 打赏
  • 举报
回复
是什么"事物"?如果你说的是"事务处理",自己编一个程序试一下不就行了?
cloud 2000-02-19
  • 打赏
  • 举报
回复
可以把ADO的事物嵌套部分写在MTS的DLL中,因为MTS可以实现。
天剑68 2000-02-19
  • 打赏
  • 举报
回复
好象不能,你想干什么?

7,759

社区成员

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

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