• 事务


    事务是作为单个工作单元而执行的一系列操作,如查询和修改数据,甚至可能是修改数据定义。

    定义事务边界的方式有显式和隐式两种。显式事务的定义需要以BEGIN TRAN 语句作为开始。如果想提交事务,则应该以COMMIT TRAN 语句显式结束事务;如果不想提交事务(撤消事务中的修改),则应该以ROLLBACK TRAN 语句显式结束事务。

    事务必须有四个属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),这个个属性的首字母可以缩写为ACID。

    原子性:事务必须是原子工作单元。这意味着在事务中进行的修改,要么全都执行,要么全都不执行。如果在事务完成之前是(在提交指定被记录到事务日志之前)系统出现故障或是重新启动,SQL Server 将会撤消在事务中进行的所有修改。同样,如果在事务处理中遇到错误,SQL Server 通常会自动回滚事务,但是也有少数例外。

    提示:通过查询 @@TRANCOUNT 函数,在代码的任何位置都可以用编程方式来判断当前是否位于一个打开的事务当中。如果不在任何打开的事务范围内,则该函数返回0;如果在某个打开的事务范围内,则返回一个大于0的值。

    一致性:事务的一致性这个术语指的是,同时发生的事务在修改和查询数据时不发生冲突,通过RDBMS 访问的数据要保持一致的状态。可以想到,一致性是一个具有一定主观性的术语,取决于应用程序的需要。

    隔离性:隔离性是一种用于控制数据访问的机制,能够确保事务只访问处于期望的一致性级别下的数据。SQL Server使用锁对各个事务之间正在修改和查询的数据进行隔离。

    持久性:在将数据修改写入到磁盘上数据库的数据分区之前,总是先把这些修改写入到磁盘上数据库的事务日志中。把提交指令记录到磁盘的事务日志中以后,即使数据修改还没有应用到磁盘的数据分区,也可以认为事务是持久化的。这时如果系统重新启动(正常启动或发生系统故障之后启动),SQL Server会检查每个数据库的事务日志,进行恢复(recovery)处理。恢复处理一般包括两个阶段:重做阶段(redo)和撤消阶段(undo)。在重做阶段,对于提交指令已经写入到日志,但数据修改还没有应用到发区的事务,数据库引擎会重做(replaying)这些事务所做的所有修改,这个过程也称为“前滚(rolling forward)”。在撤消阶段,对于提交指令还没有记录到日志中的事务,数据库引擎会撤消(undoing)这些事务所做的修改,这个过程也称为“回滚(rolling back)”。

    BEGIN TRAN ;

      INSERT INTO dbo.t1(id) values(1);

      INSERT INTO dbo.t2 (id) values(1);

    COMMIT TRAN;

  • 相关阅读:
    JS图片不间断滚动代码(向上,向下,向左,向右)
    存储过程int型转字符型
    DataList编辑、更新、取消、删除、分页
    js设置焦点
    iFrame只要竖滚动条,不要横滚动条
    C#中通过值和引用传递参数
    关于C#值类型,引用类型,值传递,引用传递
    提醒自我
    c#读取html文件内容替换之后再写入
    sql中替换字符串
  • 原文地址:https://www.cnblogs.com/zhangdx/p/3777097.html
Copyright © 2020-2023  润新知