以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  两个不同数据源的sql语句,如何写到同一个事务中,代码怎么改啊?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=157846)

--  作者:guosheng
--  发布时间:2020/10/30 15:42:00
--  两个不同数据源的sql语句,如何写到同一个事务中,代码怎么改啊?
下面这种写法对吗?
Dim cmd As new SQLCommand() 
Dim cmd1 As new SQLCommand() 
cmd
.ConnectionName = "Orders"  \'指定数据源   
cmd1.ConnectionName = "Orders123" 
Try

    Dim id As Integer = 10258
    cmd.BeginTransaction()
\'
开启事务
    cmd.CommandText = "Delete Fro m OrderDetails Where OrderID = " & id
    cmd.ExecuteNonQuery()
   
\'
继续使用同一个SQLCommand执行其它SQL语句.
    cmd1.CommandText = "Delete Fro m Orders Where OrderID = " & id
    cmd1.ExecuteNonQuery()
cmd.Commit() \'提交事务
    cmd1.Commit()
\'
提交事务
Catch
ex As Exception \'如果出错
    cmd.Rollback()
\'
则回滚事务
cmd1.Rollback() \'则回滚事务
   
MessageBox.Show(ex.Message, "错误",MessageBoxButtons.OK,MessageBoxIcon.Error)
End
Try
[此贴子已经被作者于2020/10/30 15:44:37编辑过]

--  作者:有点蓝
--  发布时间:2020/10/30 15:52:00
--  
没有办法。事务仅支持同一个数据源
--  作者:guosheng
--  发布时间:2020/10/30 15:58:00
--  
串行执行两个事务,依次,事务1 和事务2
保证事务1  和 事务2 都执行完整,有什么优化方法吗

--  作者:有点蓝
--  发布时间:2020/10/30 16:07:00
--  
没有,分离的事务没有办法保持完整。
--  作者:guosheng
--  发布时间:2020/10/30 22:25:00
--  
银行转账或支付,微信支付宝支付,应该用的是多个数据库吧,它保障数据完整性用的是什么技术或原理啊?
--  作者:有点蓝
--  发布时间:2020/10/31 9:56:00
--  
一个业务一般都是使用一个数据库,然后做冗余和集群。而不是使用多个数据库。

也不是不可以做,但是涉及到的工时和成本不是一般人能够承受的。