SQL事务控制语言(TCL)
1、什么是事务?
事务(Transaction)是由一系列相关的SQL语句组成的最小逻辑工作单元,在程序更新数据库时事务事关重要,因为必须维护数据的完整性。事务由数据操作语言完成,是对数据库所做的一个或多个修改。
用网上的例子来说明
如果我们要修改表中的某条记录,可以用以下方法:
首先删除原记录,然后插入修改后的新记录。
这个过程中有2步:如果出现记录删除成功,但插入的时候因为某种原因导致失败的话,就会出现数据丢失。
这个时候,就可以用事务来处理,把删除和插入当成是一件事,必须是2步都成功,数据才发生改变。
否则若是出现删除成功,而插入失败的情况,希望将自动回滚,恢复为原始状态。
事务的特征:
所有的事务都有开始和结束;
事务可以被保存或撤销;
如果事务在中途失败,事务中的任何部分都不会被记录到数据库。
2、事务控制是指对关系型数据库管理系统(RDBMS)里可能发生的各种事务的管理能力。
当一个事务执行并完成修改时,并不是对目标表立即进行修改,此时修改的结果只是保存到临时缓存中,只有利用事务控制命令才最终认可这个事务。
控制事务的命令有3个:
COMMIT;
ROLLBACK;
SAVEPOINT.
UPDATE
INSERT
DELETE
2.1 COMMIT命令
COMMIT 命令用于把事务所做的修改保存到数据库,表面该事务对数据库所做的操作将永久记录到数据库。
如:删除表里所有价格低于$14的产品
DELETE FROM PRODUCT_TMP WHERE cost < 14;
使用COMMIT语句把修改保存到数据库,完成这个事务
COMMIT;
2.2 ROLLBACK 命令
ROLLBACK 命令用于撤销还没有被保存到(未提交的事务)数据库的命令,它只能用于撤销上一个COMMIT或ROLLBACK命令之后的事务。
2.3 SAVEPOINT命令
保存点是事务过程中的一个逻辑点,我们可以把事务回退到这个点,而不必回退整个事务。
SAVEPOINT savepoint_name; # 在事务语句中间创建一个保存点。
2.4 ROLLBACK TO SAVEPOINT命令
回退到保存点的命令:
ROLLBACK TO SAVEPOINT_NAME;
RELEASE SAVEPOINT 命令用于删除创建的保存点,在某个保存点被释放之后,就不能再利用ROLLBACK命令来撤销这个保存点之后的事务操作了。
例:对scott.emp表综合使用COMMIT、ROLLBACK和SAVEPOINT示例。
(1)更新scott.emp表中的sal字段,然后执行ROLLBACK操作。
UPDATE scott.emp SET sal=sal*2;
已更新。
ROLLBACK;
回退已完成。(表示UPDATE语句并没有执行)
(2)更新scott.emp表中的sal字段,然后执行COMMIT操作。
UPDATE scott.emp SET sal=sal*2;
已更新。
COMMIT;
提交完成。 (表示UPDATE真正提交到数据库)
(3)向表中插入员工编号为1111的记录,设置一个保存点,然后用UPDATE命令将该记录的员工姓名修改为李明,然后用ROLLBACK命令回滚到保存点。
INSERT INTO scott.emp(empno) VALUES (1111);
已插入一行。
SAVEPOINT p1; #设置保存点p1
UPDATE scott.emp SET ename=”李明” WHERE empno=1111;
ROLLBACK TO p1;
回退已完成。
2.5 事务控制与数据库性能
当出现COMMIT命令时,回退事务信息被写入到目标表里,临时存储区域里的回退信息被清除;
当出现ROLLBACK命令时,修改不会作用于数据库,而临时存储区域里的回退信息被清除;
如果一直没有出现COMMIT 或 ROLLBACK 命令,临时存储区域里的回退信息就会不断增长,直至没有剩余空间,导致数据库停止全部进程,直至空间被释放。
SQL事务控制语言(TCL)相关推荐
- mysql数据库tcl_MySQL数据库笔记三:数据查询语言(DQL)与事务控制语言(TCL)
完整语法格式: select 表达式1|字段,.... [from 表名 where 条件] [group by 列名] [having 条件] [order by 列名 [asc|desc]] [l ...
- mysql 事务 数量_MySQL 数据查询语言(DQL) 事务控制语言(TCL)详解
一. 数据查询语言(DQL)(重中之重) 完整语法格式: select 表达式1|字段,.... [from 表名 where 条件] [group by 列名] [having 条件] [order ...
- sql事务提交回滚命令_提交,回滚和保存点SQL命令
sql事务提交回滚命令 Transaction Control Language(TCL) commands are used to manage transactions in the databa ...
- 十八、MySQL之TCL事务控制语言(详解)
TCL : Transaction Control Language 事务控制语言 零.MySQL 中的存储引擎 1.概念:在mysql中的数据用各种不同的技术存储在文件(或内存)中. 2.通过sho ...
- TCL——事务控制语言
一.事务控制语言(TCL)介绍 1.1 事务 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的.而整个单独单元作为一-个不可分割的整体,如果单元中某条SQL语句一 ...
- 一、TCL事务控制语言 二、MySQL中的约束 三、多表查询(重点) 四、用户的创建和授权 五、MySQL中的索引...
一.TCL事务控制语言 ###<1>事务的概念 事务是访问并可能更新数据库中各种数据项的执行单元. 事务是一条SQL语句,一组SQL语句,或者整个程序. 事务是恢复和并发控制的基本单位. ...
- MySQL-7 DDL约束 标识列 TCL事务控制语言 视图view
文章目录 DDL语言 常见约束 约束分类 添加约束的时机 创建表时添加约束 通用写法 修改表时添加约束 修改表时删除约束 主键和唯一的对比 外键约束 案例讲解常见约束 标识列 TCL事务控制语言 事务 ...
- DCL(数据控制语言)和TCL(事务控制语言)
文章目录 1.DCL(数据控制语言) 2.TCL(事务控制语言) 3. 其他常用sql语句 1.DCL(数据控制语言) DCL主要用来管理数据库用户以及用户涉及的权限 1.1 创建数据库中的新用户 语 ...
- MySQL_TCL事务控制语言_刘锋的博客
文章目录 TCL事务控制语言 一.事务的属性(ACIB) 原子性 一致性 隔离性 持久性 二.事务的创建 隐式的事务 显式的事务 三.事务的隔离级别 脏读: 不可重复度: 幻读: 四.delete和t ...
最新文章
- Know more about RAC statistics and wait event
- 数据科学篇| Seaborn库的使用(四)
- python tkinter 输入数字 小数_Python3 tkinter基础 Entry validate isdigit 只能输入数字的输入框...
- 生活大爆炸系列之磨望远镜
- 基于Docker布署伪分布式hadoop环境(一)
- 【Java学习笔记】数组的相关事项
- Tensorflow API(二)
- uniapp开发微信小程序--实现电子签名功能
- 京瓷打印机m5521cdn_京瓷Kyocera ECOSYS M5521cdn 驱动
- 微软产品下载地址。MSDN 我告诉你。
- 7-12 愿天下有情人都是失散多年的兄妹 (25分)
- 【vim环境配置】详细实录
- 基本知识 100048
- 云栖社区版权提示与说明【2018版】
- 经验分享 | 文献调研 - Connected Papers
- AirDroid免root操作步骤
- 佛学研究:人生本相的体察
- 预告:无穷小微积分改版,寻找接班人
- 增量型旋转编码器和绝对值旋转编码器
- 初识EMC元器件(九)——气体放电管的参数解读及选型应用