zoukankan      html  css  js  c++  java
  • 事务

    属性:

    1.原子性:事务是一个完整的操作,事务的各元素师不可分的。

    2.一致性:事务开始时和完成时,数据必须处于一致的状态。

    3.隔离性:对数据进行修改的所有并发事务是彼此隔离的。

    4.持久性:事务完成后,它对系统的影响是永久的。

    ?

    Transact-SQL使用下列语句来管理事务:

    开始事务:BEGIN TRANSACTION

    提交事务:COMMIT TRANSACTION

    回滚:ROLLBACK TRANSACTION

       public bool SendMessage(Msg_InBoxMessageModel inmodel, Msg_OutBoxMessageModel outmodel, Msg_MessageModel model)

            {

                try

                {

                    using (SqlConnection conn = new SqlConnection(DBConnString))

                    {

                        conn.Open();

                        SqlTransaction trans = conn.BeginTransaction();

                        if (!Create(model, trans: trans))

                        {

                            trans.Rollback();

                            return false;

                        }

                        inmodel.MessageId = model.Id;

                        if (!DALControl.Msg_InBoxMessageDAL.Create(inmodel, trans: trans))

                        {

                            trans.Rollback();

                            return false;

                        }

                        outmodel.MessageId = model.Id;

                        if (!DALControl.Msg_OutBoxMessageDAL.Create(outmodel, trans: trans))

                        {

                            trans.Rollback();

                            return false;

                        }

     

                        trans.Commit();

                    }

                    return true;

                }

                catch (Exception ex)

                {

                    log.Error(ex.Message, ex);

                    return false;

                }

     

            }

    两个数据库连接可以用同一个事务

    1.
    事务开始
    update db1.tb1 --成功
    update db2.tb2 --成功
    事务提交
    2.
    update db1.tb1 --成功
    update db2.tb2 --失败
    db1的操作回滚,不更新
    3.
    update db1.tb1 --失败
    update db2.tb2 --不操作
  • 相关阅读:
    Python的递归深度问题
    Python之多进程
    Python之多线程
    Git的基本操作
    ref与out区别
    Numpy基本操作
    面向对象中有哪些双下线方法及应用场景
    上下文管理
    Local与LocalStack
    基于列表实现栈
  • 原文地址:https://www.cnblogs.com/viaiu/p/4816768.html
Copyright © 2011-2022 走看看