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)相关推荐

  1. mysql数据库tcl_MySQL数据库笔记三:数据查询语言(DQL)与事务控制语言(TCL)

    完整语法格式: select 表达式1|字段,.... [from 表名 where 条件] [group by 列名] [having 条件] [order by 列名 [asc|desc]] [l ...

  2. mysql 事务 数量_MySQL 数据查询语言(DQL) 事务控制语言(TCL)详解

    一. 数据查询语言(DQL)(重中之重) 完整语法格式: select 表达式1|字段,.... [from 表名 where 条件] [group by 列名] [having 条件] [order ...

  3. sql事务提交回滚命令_提交,回滚和保存点SQL命令

    sql事务提交回滚命令 Transaction Control Language(TCL) commands are used to manage transactions in the databa ...

  4. 十八、MySQL之TCL事务控制语言(详解)

    TCL : Transaction Control Language 事务控制语言 零.MySQL 中的存储引擎 1.概念:在mysql中的数据用各种不同的技术存储在文件(或内存)中. 2.通过sho ...

  5. TCL——事务控制语言

    一.事务控制语言(TCL)介绍 1.1 事务 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的.而整个单独单元作为一-个不可分割的整体,如果单元中某条SQL语句一 ...

  6. 一、TCL事务控制语言 二、MySQL中的约束 三、多表查询(重点) 四、用户的创建和授权 五、MySQL中的索引...

    一.TCL事务控制语言 ###<1>事务的概念 事务是访问并可能更新数据库中各种数据项的执行单元. 事务是一条SQL语句,一组SQL语句,或者整个程序. 事务是恢复和并发控制的基本单位. ...

  7. MySQL-7 DDL约束 标识列 TCL事务控制语言 视图view

    文章目录 DDL语言 常见约束 约束分类 添加约束的时机 创建表时添加约束 通用写法 修改表时添加约束 修改表时删除约束 主键和唯一的对比 外键约束 案例讲解常见约束 标识列 TCL事务控制语言 事务 ...

  8. DCL(数据控制语言)和TCL(事务控制语言)

    文章目录 1.DCL(数据控制语言) 2.TCL(事务控制语言) 3. 其他常用sql语句 1.DCL(数据控制语言) DCL主要用来管理数据库用户以及用户涉及的权限 1.1 创建数据库中的新用户 语 ...

  9. MySQL_TCL事务控制语言_刘锋的博客

    文章目录 TCL事务控制语言 一.事务的属性(ACIB) 原子性 一致性 隔离性 持久性 二.事务的创建 隐式的事务 显式的事务 三.事务的隔离级别 脏读: 不可重复度: 幻读: 四.delete和t ...

最新文章

  1. 轻量级NLP工具开源,中文处理更精准,超越斯坦福Stanza
  2. 任务调度之Quartz2
  3. XCode 10 升级问题总结
  4. java contenttype_POST不同提交方式对应的Content-Type,及java服务器接收参数方式
  5. android图片闪动动画,android图片闪烁或帧动画
  6. java + testng wsdl 测试_在测试中使用XPATH断言的策略
  7. 05-Elasticsearch官网译文(1)
  8. sklearn 特征选择与特征抽取 —— feature_selection、feature_extraction
  9. 掌握中台系统,需要了解哪些技术?
  10. c语言反序数1234变4321,C语言编程题练习
  11. 软件工程总结笔记——软件详细设计(五)
  12. ESDCAT静电猫项目
  13. Burst(突发)信号
  14. 新西兰留学再移民,哪些专业好就业?
  15. 基于5g的交通运输_一种基于5G的智慧交通基础服务平台
  16. AI上推荐 之 FiBiNET模型(特征重要性选择与双线性特征交叉)
  17. makefile suppress echoing the actual command @
  18. 【干货】营销拓客思维导图24式.pdf(附下载链接)
  19. 内部人员造成的数据泄露,企业该如何防护
  20. vs2015 或其他版本 一键卸载所有组件工具,彻底卸载干净

热门文章

  1. UVA - 232 ​​​​​​​Crossword Answers
  2. 腾讯财报中“最大秘密”:2018云收入91亿元,交首份TO B答卷
  3. 转向Kotlin——数据类和封闭类
  4. 【Spark】Spark-空RDD判断与处理
  5. maven安装及集成myeclipse
  6. 使用visio 提示此UML形状所在的绘图页不是UML模型图的一部分 请问这个问题怎么解决?...
  7. Linux 定时执行命令 crontab
  8. peewee mysql_scrapy中利用peewee插入Mysql
  9. Java并发编程之并发容器ConcurrentHashMap(JDK1.7)解析
  10. Spring Boot 日志的使用及logback.xml的使用