My SQL事务控制语言(TCL)
来源:互联网 发布:电脑桌面知乎 编辑:程序博客网 时间:2024/06/07 01:15
1、什么是事务?
事务(Transaction)是由一系列相关的SQL语句组成的最小逻辑工作单元,在程序更新数据库时事务事关重要,因为必须维护数据的完整性。事务由数据操作语言完成,是对数据库所做的一个或多个修改。
事务的特征:
所有的事务都有开始和结束;
事务可以被保存或撤销;
如果事务在中途失败,事务中的任何部分都不会被记录到数据库。
2、事务控制是指对关系型数据库管理系统(RDBMS)里可能发生的各种事务的管理能力。
当一个事务执行并完成修改时,并不是对目标表立即进行修改,此时修改的结果只是保存到临时缓存中,只有利用事务控制命令才最终认可这个事务。
控制事务的命令有3个:
COMMIT;
ROLLBACK;
SAVEPOINT.
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 命令,临时存储区域里的回退信息就会不断增长,直至没有剩余空间,导致数据库停止全部进程,直至空间被释放。
- My SQL事务控制语言(TCL)
- TCL 事务控制语言
- TCL: 事务控制语言
- SQL语言:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事务控制语言(TCL)
- MySQL的初步使用(3)———SQL语句TCL事务控制语言
- oracle TCL事务控制语言及 运算符
- 事务控制语言(DTL)
- TCL语言(一)
- TCL语言(二)
- 事务控制语言(DTL)
- DB2数据库、事务控制语言、系统控制语言、函数、嵌入式SQL(SQLJ)
- SQL四大语言:DDL DML DCL TCL
- My SQL数据定义语言
- TCL基础教程——(5)TCL中的结构控制
- SQL 基础查询语言(事务)(三)
- SQL Server的事务控制
- SQL批处理与事务控制
- tcl语言
- uva 10837 A Research problem 欧拉函数+暴力
- 11.13
- uva11997 K Smallest Sums
- HDU1050_Moving Tables
- 常用的python读写文件操作_二进制_偏移量
- My SQL事务控制语言(TCL)
- java的枚举enum
- javascript事件委托理解,jQuery .on()方法一步到位实现事件委托
- IDEA 常用快捷键列表
- ECS
- 04-javascript String、Number、Math、Date对象
- list,set,map,数组之间的相互转换详细解析
- 欢迎使用CSDN-markdown编辑器
- 11131