汤阳光 - Oracle课程文档(二) 下载本文

3.4.2. 一般用法示例

3.4.3. 在 DELETE 中使用子查询

? 在 DELETE 中使用子查询,使删除基于另一个表中的数据。

3.4.4. 删除中的数据完整性错误

3.4.5. Delete和Truncate

? 都是删除表中的数据

? Delete操作可以rollback,可以闪回 ? Delete操作可能产生碎片,并且不释放空间 ? Truncate是清空表

3.5. 数据库事务

3.5.1. 事务基础

数据库事务由以下的部分组成:

? 一个或多个DML 语句

? 一个 DDL(Data Definition Language – 数据定义语言) 语句 ? 一个 DCL(Data Control Language – 数据控制语言) 语句

数据库事务:

? 以第一个 DML 语句的执行作为开始

? 以下面的其中之一作为结束:

? 显示结束: commit rollback

? 隐式结束(自动提交): DDL语言,DCL语言, exit(事务正常退出)

? 隐式回滚(系统异常终了): 关闭窗口,死机,掉电

使用COMMIT 和 ROLLBACK语句,我们可以:

? 确保数据完整性。

? 数据改变被提交之前预览。 ? 将逻辑上相关的操作分组。

3.5.2. 控制事务

? 回滚到保留点

? 使用 SAVEPOINT 语句在当前事务中创建保存点。

? 使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。

3.5.3. 事务进程

? 自动提交在以下情况中执行:

? DDL 语句。

? ?

? 提交或回滚前的数据状态

? 改变前的数据状态是可以恢复的

? ? ?

执行 DML 操作的用户可以通过 SELECT 语句查询之前的修正 其他用户不能看到当前用户所做的改变,直到当前用户结束事务。 DML语句所涉及到的行被锁定, 其他用户不能操作。

DCL 语句。

不使用 COMMIT 或 ROLLBACK 语句提交或回滚,正常结束会话exit。

? 会话异常结束或系统异常会导致自动回滚。

? 提交后的数据状态

? 数据的改变已经被保存到数据库中。

? ? ? ?

改变前的数据已经丢失。 所有用户可以看到结果。

锁被释放, 其他用户可以操作涉及到的数据。 所有保存点被释放。

? 提交数据示例:

? 数据回滚后的状态

使用 ROLLBACK 语句可使数据变化失效:

? 数据改变被取消。