以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  两个数据源下的数据库事务  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=192332)

--  作者:tld
--  发布时间:2024/6/14 15:57:00
--  两个数据源下的数据库事务
老师好,两个数据源,分别是 y1 与y2, 只有当 bo 与 boo 都为true的时候, 才执行事务。 下面的代码有没有问题? 谢谢老师

dim cmd1 as new sqlcommand
cmd1.Conn ectionName=“Y1”

dim cmd2 as new sqlcommand
cmd2.Conn ectionName=“Y2”

dim bo as boolen=true
dim boo as boolen=true
        Try
            cmd1.BeginTransaction 
            cmd1.CommandText = "---------")
            cmd1.ExecuteNonQuery
            bo = True 
        Catch ex As Exception 
            bo = False
            cmd1.Rollback
            Return 
        End Try 
-----------------------------------------
        Try
            cmd2.BeginTransaction 
            cmd2.CommandText = "---------")
            cmd2.ExecuteNonQuery
            boo = True 
        Catch ex As Exception 
            boo = False
            cmd2.Rollback
            Return 
        End Try 
----------------------------
if bo=true andalso boo=too then
    cmd1.Commit
    cmd2.Commit
end if

[此贴子已经被作者于2024/6/14 15:58:14编辑过]

--  作者:有点蓝
--  发布时间:2024/6/14 16:06:00
--  
不同数据源是无法进行事务同一处理的。无法像上面这样使用
--  作者:有点蓝
--  发布时间:2024/6/14 16:07:00
--  
事务2回滚的时候也必须回滚事务1

        Catch ex As Exception 
            boo = False
            cmd1.Rollback
            cmd2.Rollback
            Return 
        End Try