文档详情

ZTESOracle数据操作语言和事务控制第六讲.ppt

发布:2017-05-24约7.91千字共45页下载文档
文本预览下载声明
事务 始于第一个DML语句 结束于以下任意一个事件: COMMIT 或 ROLLBACK语句 DDL 或 DCL语句 (自动提交) 用户退出SQL*Plus 系统瘫痪(非正常事务) COMMIT和ROLLBACK语句 使用COMMIT和ROLLBACK语句,你可以做以下事情: 确保数据一致性 将逻辑相关的操作分组 事务控制 时间 SAVEPOINT B SAVEPOINT A DELETE INSERT UPDATE INSERT COMMIT 事务 ROLLBACK to SAVEPOINT B ROLLBACK to SAVEPOINT A ROLLBACK UPDATE... SAVEPOINT update_done; Savepoint created. INSERT... ROLLBACK TO update_done; Rollback complete. 回退事务到保存点 用SAVEPOINT语句在当前事务中定义保存点 用ROLLBACK TO SAVEPOINT语句回退事务到相应的保存点 在以下情况下,系统会自动进行提交: 发出一个DDL语句 发出一个DCL语句 正常退出SQL*Plus,即使没有显式的进行COMMIT或ROLLBACK操作 在非正常退出SQL*Plus或系统瘫痪时,系统自动进行回退处理 隐式事务处理 COMMIT或ROLLBACK前的数据状态 数据的前映像可以被恢复 当前用户可以用SELECT 语句查看所发出的DML语句对数据的改变结果 其他用户不能看到当前DML对数据的改变情况 所涉及到的数据行被锁定,其他用户不能修改这些数据行 COMMIT后的数据状态 数据的改变被永久确定下来 数据的前映像丢失,不能被恢复 数据库中的所有用户都能看到数据的改变情况 数据行上的锁被释放,其他用户也可以处理这些行 所有的保存点都被释放 COMMIT; Commit complete. 修改数据 提交数据改变 DELETE FROM employees WHERE employee_id = 99999; 1 row deleted. INSERT INTO departments VALUES (290, Corporate Tax, NULL, 1700); 1 row inserted. 提交数据 ROLLBACK后的数据状态 使用ROLLBACK放弃对数据的所有修改,使数据恢复到修改以前的值 数据修改没有完成 数据恢复到修改以前的值 加在数据上的锁被释放 DELETE FROM copy_emp; 22 rows deleted. ROLLBACK; Rollback complete. 语句级回退 当一个单一的DML语句失败时,只有这一个语句的执行被回退 所有其它的数据改变被保留 用户需要使用COMMIT或ROLLBACK语句,显式结束事务 在DDL语句的前后系统会自动了出一个提交命令,对此前的数据修改进行提交 读一致性 读一致性提供在任意时刻数据的一致性映像 一个用户对数据的修改不影响其他用户对数据的修改 读一致性确保在同一时间: 读操作不用等待写操作 写操作不用等待读操作 SELECT * FROM employees; 读一致性的实现机制 UPDATE employees SET salary = 7000 WHERE last_name = Goyal; 数据块 回滚段 改变的和未改变的数据 改变前的老数据 用户A 用户B 读一致性映像 锁 在Oracle数据库中,锁: 在并发的事务之间防止对数据破坏性的操作 不需要用户参预 自动使用最低级别的限制 在整个事务期间被占用 有两种:显式锁和隐式锁 隐式锁 有两种锁模式: 独占锁:其他用户不能同时获得 共享锁:其他用户可以同时获得 高级别的数据并发: DML: 表级共享,行级独占 Queries: 不需要锁 DDL: 锁定对象定义 直到commit或rollback时才释放 小结 在本课中,您应该学会: 如何使用DML语句并进行事务控制 描 述 向表中插入数据 修改表中的数据 删除表中的数据 根据条件向表中插入数据或修改表中的数据 提交数据改变 保存点 回退数据改变 语 句 INSERT UPDATE DELETE MERGE COMMIT SAVEPOINT ROLLBACK 操作数据 本章目标 在本课中您将学会一下内容: DML数据操作语言概述 使用INSERT向表中插入行 使用UPDATE修改表中的行 使用DELETE删除表中的行 数据合并 事务控制 数据操作语言DML 当一下发生一下情况是执行DML语句: 在表中增加一行记录 修改表中的记录 删除表中的记录 同一个事务
显示全部
相似文档