知识大全 事务(3)

Posted 语句

篇首语:拼一个春夏秋冬,愿一生无怨无悔。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 事务(3)相关的知识,希望对你有一定的参考价值。

SQL实战新手入门:事务(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   事务( )

  下面的例子演示了Microsoft SQL Server中嵌套事务的概念 它使用内置的@@TRANCOUNT函数来跟踪已初始化的事务的数量

  BEGIN TRANSACTION trans

   the transaction counter @@TRANCOUNT =

  INSERT INTO <table> VALUES <values>

  BEGIN TRANSACTION trans

   the transaction counter @@TRANCOUNT =

  INSERT INTO <table> VALUES <values>

  BEGIN TRANSACTION trans

   the transaction counter @@TRANCOUNT =

  INSERT INTO <table> VALUES <values>

  MIT TRANSACTION trans

   Nothing mitted at this point but the transaction

   counter is decremented by ; @@TRANCOUNT =

  MIT TRANSACTION trans

   Nothing mitted at this point but the transaction counter

   is decremented by ; @@TRANCOUNT =

  MIT TRANSACTION trans

   All INSERTs are mitted to the database

   the transaction counter is decremented by ; @@TRANCOUNT =

  在这个例子中 为了将 条记录插入到表中 初始化了 个事务 只有最后一个MIT语句才会实际地将修改永久保存到表中

   回滚事务

  当需要 取消 对数据的修改时 应该使用ROLLBACK回滚事务 在最后的MIT语句之前 都可以发出ROLLBACK命令 ROLLBACK命令的结果是自动回滚自启动当前控制事务以来所做的全部修改

  除了Microsoft SQL Server 中用户命名的事务和一些可选的子句之外 在所有RDBMS中以及SQL标准中回滚事务的语法都是相同的 下面的语句试图更新LIBRARY数据库的BOOKS表中的BK_PRICE列 但是所有的修改都将被回滚

  UPDATE book

  SET bk_price =

  WHERE bk_id=

  ROLLBACK WORK

  与MIT语句一样 如果发出了ROLLBACK语句 那么所有的锁都将被释放 表 列出了特定于各个厂商的ROLLBACK语句

  表 各厂商特定的ROLLBACK语句

  WORK子句是可选的 TOSAVEPOINT子句将在本章随后进行解释 FORCE子句附属于分布式事务 它的行为非常类似于MIT语句中FORCE子句的功能 Microsoft SQL Server则具有一个可选的<transaction name>子句

  由于某些语句(例如DDL语句)在语句执行之前或执行之后自动地发出一条MIT语句 因此在该DDL语句之前发生的对数据的修改也会被提交

   保存点

  通常情况下 一个事务包含了一个以上的SQL语句 你可能想MIT或ROLLBACK某些SQL语句 为了增强事务处理的粒度 引入了SAVEPOINT(保存点)的概念 保存点允许在事务中定义一个命名的位置 通常是查询中某些重要操作之后的 里程碑 如果在之后发生了错误 可以回滚所有的修改 但不是回滚到事务一开始 而只是回滚到特定的保存点 如果显式(或隐式 就像在一个DDL语句之后)发出了一条MIT语句 将释放在事务中声明的所有保存点

  下面是一个在SQL批语句中使用SAVEPOINT的例子

  UPDATE books

  SET bk_price =

  WHERE bk_id = ;

  SAVEPOINT first_update;

  DELETE books

  WHERE bk_id = ;

  SAVEPOINT first_delete;

  DELETE books

  WHERE bk_id = ;

  ROLLBACK first_update;

  MIT;

       返回目录 SQL实战新手入门

       编辑推荐

       Oracle索引技术

       高性能MySQL

cha138/Article/program/SQL/201311/16448

相关参考