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 ...
最新文章
- 轻量级NLP工具开源,中文处理更精准,超越斯坦福Stanza
- 任务调度之Quartz2
- XCode 10 升级问题总结
- java contenttype_POST不同提交方式对应的Content-Type,及java服务器接收参数方式
- android图片闪动动画,android图片闪烁或帧动画
- java + testng wsdl 测试_在测试中使用XPATH断言的策略
- 05-Elasticsearch官网译文(1)
- sklearn 特征选择与特征抽取 —— feature_selection、feature_extraction
- 掌握中台系统,需要了解哪些技术?
- c语言反序数1234变4321,C语言编程题练习
- 软件工程总结笔记——软件详细设计(五)
- ESDCAT静电猫项目
- Burst(突发)信号
- 新西兰留学再移民,哪些专业好就业?
- 基于5g的交通运输_一种基于5G的智慧交通基础服务平台
- AI上推荐 之 FiBiNET模型(特征重要性选择与双线性特征交叉)
- makefile suppress echoing the actual command @
- 【干货】营销拓客思维导图24式.pdf(附下载链接)
- 内部人员造成的数据泄露,企业该如何防护
- vs2015 或其他版本 一键卸载所有组件工具,彻底卸载干净
热门文章
- UVA - 232 ​​​​​​​Crossword Answers
- 腾讯财报中“最大秘密”:2018云收入91亿元,交首份TO B答卷
- 转向Kotlin——数据类和封闭类
- 【Spark】Spark-空RDD判断与处理
- maven安装及集成myeclipse
- 使用visio 提示此UML形状所在的绘图页不是UML模型图的一部分 请问这个问题怎么解决?...
- Linux 定时执行命令 crontab
- peewee mysql_scrapy中利用peewee插入Mysql
- Java并发编程之并发容器ConcurrentHashMap(JDK1.7)解析
- Spring Boot 日志的使用及logback.xml的使用