zoukankan      html  css  js  c++  java
  • SQL SERVER 5 事物

    1、实物的概念

    数据库中的事物是一种机制,每一个事物是一个独立的工作单元,它包含了一组数据库操作命令,且这组命令要么都执行,要么都不执行,是一个不可分割的工作逻辑单元。

    2、事务的特性

    • 原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行。
    • 一致性(Consistency):当事务完成时,数据必须处于一致状态。
    • 隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。
    • 永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性。

    3、如何创建事务

    T-SQL使用下列语句来管理事务:
    • 开始事务:BEGIN TRANSACTION
    • 提交事务:COMMIT TRANSACTION
    • 回滚(撤销)事务:ROLLBACK TRANSACTION
    一旦事务提交或回滚,则事务结束。
    判断某条语句执行是否出错:
    使用全局变量@@ERROR,@@rowcount;
    @@ERROR只能判断当前一条T-SQL语句执行是否有错,为了判断事务中所有T-SQL语句是否有错,我们需要对错误进行累计;     
     如: SET @errorSum=@errorSum+@@error
     

    4、事务的分类

    • 显示事务:用BEGIN TRANSACTION明确指定事务的开始,这是最常用的事务类型
    • 隐性事务:通过设置SET IMPLICIT_TRANSACTIONS ON 语句,将隐性事务模式设置为打开,下一个语句自动启动一个新事务。当该事务完成时,再下一个 T-SQL 语句又将启动一个新事务
    • 自动提交事务:这是 SQL Server 的默认模式,它将每条单独的 T-SQL 语句视为一个事务,如果成功执行,则自动提交;如果错误,则自动回滚。
     

    5、创建事务的原则

    创建事务时要遵守一下的原则:
    • 事务要尽可能的简短
    • 在事务中访问的数据量要尽量最少
    • 浏览数据是尽量不要打开事务
    • 在事务处理期间不要请求用户输入

    6、使用事务的注意事项

    • 在每个操作之后,都要检查@@error或rowcount的值;
    • 当一个事务结束之后,紧跟在事务之后的T-SQL代码可以继续执行,但是出错后不能再回滚事务了;
    • 已经提交完毕的事务会将数据正式写入数据库;
    • 在一个事务执行时,如果发生如断电等意外事件,则在下次重新启动系统时,该事务会自动回滚;
    • 在事务里发生错误是的事务无法执行下去,事务也会自动回滚;
    • 无法回滚的语句不能在事务中使用。

    7、事务的工作原理

    • 在事务开始时,SQLServer会将要修改的数据锁定,同时创建一个临时的事务日志,在该临时的事务日志里存放更改的数据和更改的存储过程。
    • 在事务未提交之前,事务中所有的数据操作是临时的,一旦发生数据操作失败,就使用临时日志里的数据去回滚事务操作,并解除锁定。在事务被成功提交后,数据库就将临时的事务日志的内容存储到数据库中,此时事务操作完成。

    8、事务的隔离级别

    在SQL Server 中事务的隔离级别由低到高分为5个级别:
    • Read uncommitted:不隔离数据
    • Read committed:不允许读取没有提交的数据
    • Repeatable Read:在事务中锁定所读取的数据不让别人修改和删除。
    • Snashot:快照隔离,可以为读取数据的事务提供所需数据的一个已提交的版本。
    • Serializable:将事务所要用到的数据表全部锁定,不与许其它事务添加、修改和删除数据。
     
     
     

     

  • 相关阅读:
    Intent
    What should we do next in general after collecting relevant data
    NOTE FOR Secure Friend Discovery in Mobile Social Networks
    missing pcap.h
    after building Android Source code
    plot point(one column)
    When talking to someone else, don't infer that is has been talked with others at first. It may bring repulsion to the person who is talking with you.
    进程基本知识
    Python input和raw_input的区别
    强制 code review:reviewboard+svn 的方案
  • 原文地址:https://www.cnblogs.com/yuchengping/p/3055410.html
Copyright © 2011-2022 走看看