第四章 数据更新 4-3 事务
一、什么是事务
在RDBMS中,事务是对表中数据进行更新的单位。简单来说,事务就是需要在同一个处理单元中执行的一系列更新处理的集合。
二、创建事务
事务的开始语言:
例子:
事务结束的命令:
(1)COMMIT 提交处理
COMMIT是提交事务包含的全部更新处理的结束指令。相当于文件处理中的覆盖保存。
一旦提交,就无法恢复到事务开始前的状态了。
注:虽然我们不知道事务开始的时间点,但是事务结束时一定要仔细进行确认。
(2)ROLLBACK 取消处理
ROLLBACK是取消事务包含的全部更新处理的结束指令,相当于文件处理中的放弃保存。
一旦回滚,数据库就会恢复到事务开始之前的状态。
例子:
三、事务处理何时开始
在不使用指令而悄悄开始事务的情况下,应该如何区分各个事务呢?
分两种情况:
(1)自动提交模式:每一条SQL语句就是一个事务。
(2)直到用户执行COMMIT或者ROLLBACK为止算一个事物。
使用(1)规则的数据库有SQL Server、PostgreSQL、MySQL
使用(2)规则的数据库有Oracle
三、ACID特性
DBMS的事务都遵循四种特性,ACID特性,所有DBMS都必须遵守的规则。
(1)原子性Atomicity
原子性是指事务结束时,其中所包含的更新处理要么全部执行,要么完全不执行,也就是说要么占有一切,要么一无所有。
(2)一致性 Consistency
一致性是指事务中包含的处理要满足数据库提前设置的约束,如主键约束,NOT NULL约束等。对于SQL来说,不合法的SQL会被回滚。一致性也称为完整性。
(3)隔离性 Isolation
隔离性指的是在保证不同事务之间互不干扰的特性。该特性保证了事务之间不会互相嵌套。
此外,在某个事务中进行的更改,在该事务结束之前,对其他事务而言是不可见的。
(4)持久性 Durability
持久性称为耐久性,指的是在事务(不论是提交还是回滚)结束后,DBMS能够保证该时间点的数据状态会被保存的特性。
即使由于系统故障导致数据丢失,数据库也一定能够通过某种手段进行恢复。