SQL多表操作的回滚问题
有两个表需要更新,但是有先后顺序,
例如有表A和表B,需要先更新A,A更新成功后再更新B,但是如果B更新失败需要回滚A的操作;
现在遇到一点结构性的问题,这两个表的数据库操作函数是分开的(为了程序结构,而且也有其他地方有单独更新表A和表B的),
using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction)) { SqlTransaction tran = null; try { conn.Open(); tran = conn.BeginTransaction(); .................;//省略 tran.Commit(); } catch (Exception ex) { if (tran != null) { tran.Rollback(); } } }--是只要没提交,就可以回滚的。--只要是一个事务中的语句。
[解决办法]
嗯,同一个事务中就可以了,
但是TransactionScope.Complete()判断的标准是系统是否抛出异常来判断是否回滚,
楼主可以考虑自己添加判断条件来判断是否执行Complete,如果不执行该函数,则系统最后
会自动回滚前面所有的操作(前提是在using语句中)