• SQL SERVER 事务处理


    <1>.事务的概念
              事务是一个不可分割的工作逻辑单元。
    <2>.为什么使用事物
              可以防止错误的发生。
    <3>.事物的作用
              要么所有的操作全部完成,要么所有操作都不执行。
    <4>.什么是事物
              事务是单个的工作单元
                如果某一事务成功,则在该事务中进行的所有的数据更改均会提交,称为数据库中的永久组成部分。
                如果事务遇到错误且必须取消或回滚,则所有数据更改均被清楚。
    <5>.事务的特性
                事务必须具备以下四个属性,简称ACID 属性:
                 (1).原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行。
                 (2).一致性(Consistency):当事务完成时,数据必须处于一致状态。
                 (3).隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。
                 (4).永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性。
    <6>.如何创建事务
               1. T-SQL使用下列语句来管理事务:
                 (1).开始事务:BEGIN TRANSACTION
                 (2).提交事务:COMMIT TRANSACTION
                 (3).回滚(撤销)事务:ROLLBACK TRANSACTION
               2.  一旦事务提交或回滚,则事务结束。
                 (1).判断某条语句执行是否出错:
                 (2).使用全局变量@@ERROR;
                 3).@@ERROR只能判断当前一条T-SQL语句执行是否有错,为了判断事务中所有T-SQL语句是否有错,我们需要对错误进行累计;          
                   如:SET @errorSum=@errorSum+@@error
    <7>.事务的分类
                (1).显示事务:用BEGIN TRANSACTION明确指定事务的开始,这是最常用的事务类型
                (2).隐性事务:通过设置SET IMPLICIT_TRANSACTIONS ON 语句,将隐性事务模式设置为打开,下一个语句自动启动一个新事务。当该事务完成时,再              下一个 T-SQL 语句又将启动一个新事务
                (3).自动提交事务:这是 SQL Server 的默认模式,它将每条单独的 T-SQL 语句视为一个事务,如果成功执行,则自动提交;如果错误,则自动回滚。
    <8>.创建事务的原则
                创建事务时要遵守一下的原则:
                 (1).事务要尽可能的简短
                 (2).在事务中访问的数据量要尽量最少
                 (3).浏览数据是尽量不要打开事务
                 (4).在事务处理期间不要请求用户输入
    <9>.Transact-SQL中使用哪些语句管理事务?
                开始事务:begin transaction
                提交事务:commit transaction
                回滚事务:rollback transaction 
    <10>.使用事务的注意事项
                (1).在每个操作之后,都要检查@@error或rowcount的值;
                (2).当一个事务结束之后,紧跟在事务之后的T-SQL代码可以继续执行,但是出错后不能再回滚事务了;
                (3).已经提交完毕的事务会将数据正式写入数据库;
                (4).在一个事务执行时,如果发生如断电等意外事件,则在下次重新启动系统时,该事务会自动回滚;
                (6).在事务里发生错误是的事务无法执行下去,事务也会自动回滚;
                (7).无法回滚的语句不能在事务中使用。
    <11>.事务的工作原理
                (1).在事务开始时,SQLServer会将要修改的数据锁定,同时创建一个临时的事务日志,在该临时的事务日志里存放更改的数据和更改的存储过程。
                (2).在事务未提交之前,事务中所有的数据操作是临时的,一旦发生数据操作失败,就使用临时日志里的数据去回滚事务操作,并解除锁定。在事务              被成功提交后,数据库就将临时的事务日志的内容存储到数据库中,此时事务操作完成。
    <12>.事务的隔离级别
                在SQL Server 中事务的隔离级别由低到高分为5个级别
                   (1).Read uncommitted:不隔离数据
                   (2).Read committed:不允许读取没有提交的数据
                   (3).Repeatable Read:在事务中锁定所读取的数据不让别人修改和删除。
                   (4).Snashot:快照隔离,可以为读取数据的事务提供所需数据的一个已提交的版本。
                   (5).Serializable:将事务所要用到的数据表全部锁定,不与许其它事务添加、修改和删除数据。

  • 相关阅读:
    2016年开源软件评选(截图备份)
    牛逼的思维方式都是倒逼出来的(摘)
    3-22 多态
    3 -20 类
    3 -19标准库
    3 -16 json序列化
    3 -16 内置方法
    迭代对象 和 迭代器
    3 -14 迭代 和列表 生成器
    3-13 装饰器
  • 原文地址:https://www.cnblogs.com/ranfang/p/3057237.html
Copyright © 2020-2023  润新知