数据库系统原理
  • 数据库系统原理
  • 引言
    • 数据库系统概述
  • 关系模型介绍
    • 关系数据库结构
    • 数据库模式
    • 关系代数
      • 选择运算
      • 投影运算
      • 笛卡尔运算
      • 连接运算
      • 集合运算
      • 其他运算
  • SQL介绍
    • SQL语言分类
    • SQL数据类型
    • SQL数据库操作
    • SQL数据表操作
    • SQL数据操纵语言
    • SQL数据查询语言
    • 集合运算
    • 聚集函数
  • 中级SQL
    • 连接查询
    • 内连接
    • 外连接
    • 交叉连接和自连接
    • 视图
    • 完整性约束
    • SQL用户和授权
  • 高级SQL
    • 函数
    • 存储过程
    • 触发器
  • ER模式数据库设计
    • 数据库设计过程概览
    • 需求分析
    • 实体-联系模型
      • 复杂属性
      • 映射基数和弱实体集
    • 将E-R图转换为关系模式
    • E-R模型设计
  • 关系数据库设计
    • 数据库设计规范化
    • 函数依赖理论
    • 关系范式
  • 半结构化数据
    • 半结构化数据
  • 应用程序开发
    • ADO.NET访问数据库技术
    • 断开模式数据查询
    • 连接模式数据更新
  • 数据存储结构
    • 磁盘
    • 文件的存储
    • 文件的逻辑结构
    • 文件组织
  • 索引
    • 索引基本概念
    • B树索引
    • B+树索引
    • MySQL索引的基本语法
    • 联合索引
  • 查询处理
    • 查询处理概述
  • 查询优化
    • 查询优化概述
    • 查询树的启发式优化(代数优化算法)
  • 事务
    • 事务的概念
    • 事务的特性
    • MySQL事务处理
    • 可串行化
  • 并发控制
    • 并发控制概述
    • 封锁
    • 两阶段封锁协议封锁
    • 多粒度封锁
    • 活锁和死锁
    • 基于时间戳排序的并发控制
    • 乐观控制法
  • 恢复系统
    • 数据库恢复概述
    • 数据库恢复的实现技术
    • 基于检查点的数据库恢复
Powered by GitBook
On this page
  • 开始事务
  • 结束事务
  • 撤销事务
  • 回滚事务
  1. 事务

MySQL事务处理

开始事务

当一个应用程序的第一条SQL语句或者在commit 或rollback 后的第一条SQL执行后,一个新的事务也就开始了。另外还可以使用一条start transaction 语句来显式地启动一个事务。

语法格式:

start transaction | begin work 

begin work 语句可以用来替代start transaction 语句,但是start transaction 更常用些。

结束事务

commit 语句是提交语句,它使得自从事务开始以来所执行的所有数据修改成为数据库的永久部分,也标志一个事务的结束,其语法格式为:

COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]

注意:MySQL使用的是平面事务模型,因此嵌套的事务是不允许的。在第一个事务里使用start transaction 命令后,当第二个事务开始时,自动地提交第一个事务。同样,下面的这些MySQL语句运行时都会隐式地执行一个commit 命令:

drop database / drop table
create index / drop index 
alter table / rename table 
lock tables / unlock tables 
set AUTOCOMMIT=1

撤销事务

rollback 语句是撤销语句,它撤销事务所做的修改,并结束当前这个事务。

语法格式:

ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]

回滚事务

除了撤销整个事务,用户还可以使用rollback to 语句使事务回滚到某个点,在这之前需要使用savepoint 语句来设置一个保存点。

SAVEPOINT identifier

rollback to savepoint 语句会向已命名的保存点回滚一个事务。如果在保存点被设置后,当前事务对数据进行了更改,则这些更改会在回滚中被撤销,语法格式为:

ROLLBACK [WORK] TO SAVEPOINT identifier

当事务回滚到某个保存点后,在该保存点之后设置的保存点将被删除。

release savepoint 语句会从当前事务的一组保存点中删除已命名的保存点。不出现提交或回滚。如果保存点不存在,会出现错误,语法格式为:

RELEASE SAVEPOINT identifier

有关事务的处理过程:

1. START TRANSACTION
2. UPDATE …
3. DELETE…
4. SAVEPOINT S1;
5. DELETE…
6. ROLLBACK WORK TO SAVEPOINT S1;
7. INSERT…
8. COMMIT WORK;
Previous事务的特性Next可串行化

Last updated 4 months ago