知识大全 事务(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相关参考