以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 不同数据源的事务怎么设置? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=121619) |
-- 作者:luodang2050 -- 发布时间:2018/7/10 15:43:00 -- 不同数据源的事务怎么设置? 如下:分别对两个数据源的表进行操作(log_insert为插入日志,str_insert为新增行),怎么执行事务才能保持一致? 个人理解:假设数据表数据验证不通过导致失败,将触发日志回滚? Try Connections(gs_strActiveConn).BeginTransaction() cmd.ConnectionName = gs_strActiveConn cmd.CommandText = log_insert cmd.ExecuteNonQuery
Connections(gs_strActiveConn).Commit \'提交事务,所有操作生效 cmd.ConnectionName = sqlcoon \'sqlcoon有可能与日志不同数据源 cmd.CommandText = str_insert cmd.ExecuteNonQuery \'插入数据 Catch ex As Exception \'如果出错
Connections(sqlcoon).Rollback() \'回滚事务,撤销所有操作 End Try [此贴子已经被作者于2018/7/10 15:49:25编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/7/10 15:58:00 -- 分别开启两个数据源的事务,一起提交一起回滚。如果出错,回滚两个。 |
-- 作者:luodang2050 -- 发布时间:2018/7/10 16:11:00 -- 是修改成如下么?那假如事务1执行成功,事务2失败,回滚还能生效? Try Connections(gs_strActiveConn).BeginTransaction()
Connections(sqlcoon).BeginTransaction()
cmd.ConnectionName = gs_strActiveConn cmd.CommandText = log_insert cmd.ExecuteNonQuery cmd.ConnectionName = sqlcoon \'sqlcoon有可能与日志不同数据源 cmd.CommandText = str_insert cmd.ExecuteNonQuery \'插入数据
Connections(gs_strActiveConn).Commit \'提交事务,所有操作生效
Connections(sqlcoon).Commit \'提交事务,所有操作生效
Catch ex As Exception \'如果出错
Connections(gs_strActiveConn).Rollback() \'回滚事务,撤销所有操作
Connections(sqlcoon).Rollback() \'回滚事务,撤销所有操作
End Try |
-- 作者:有点甜 -- 发布时间:2018/7/10 16:21:00 -- 如果sql语句执行错误ExecuteNonQuery,是不会执行下面的提交事务代码的,回滚即可。 |