oracle数据库事务相关【weber出品必属精品】
2014-08-20 21:43 yaoweber 阅读(194) 评论(0) 编辑 收藏 举报-
事务的概念:
事务:一个事务由一组构成一个逻辑操作的DML语句组成事务有开始有结束,事务以DML语句开始,以Conmmit和Rollback结束。
以下情况会使得事务结束:1. 执行COMMIT 或者 ROLLBACK 语句
2. 执行DDL或者 DCL语句
3. 用户退出
4. 系统崩溃
- 一个事务可以包含下列语句:
1. 对数据做出一致性修改的DML语句
2. 一个 DDL 语句
3. 一个 DCL语句
- DDL与和DCL语句执行的过程:
1. 首先发出COMMIT;
2. 执行对数据字典的DML操作
3. 如果成功,commit,如果失败,rollback
- 保证数据的一致性:没有提交的数据,其他的用户看不到
在数据永久改变之前,检查数据的改变
对逻辑相关的操作进行分组
- 控制事物:保存点(savepoint)
-
SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ------ --------- ----- --------- ----- ----- ------ 7369 ALLEN SALESMAN 7902 17-DEC-80 1600 20 1 y 100 2 w 100 SQL> savepoint s1; Savepoint created. SQL> insert into t (empno,ename) values(3,'b'); 1 row created. SQL> savepoint s2; Savepoint created. SQL> delete t; 4 rows deleted. SQL> select * from t; no rows selected SQL> rollback to savepoint s2; Rollback complete. SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ------ --------- ----- --------- ----- ----- ------ 7369 ALLEN SALESMAN 7902 17-DEC-80 1600 20 1 y 100 2 w 100 3 b 100 SQL> rollback to savepoint s1; Rollback complete. SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ------ --------- ----- --------- ----- ----- ------ 7369 ALLEN SALESMAN 7902 17-DEC-80 1600 20 1 y 100 2 w 100 ----这里要注意了啊,因为rollback到了的s1这个保存点,也就不可以在rollback到s2这个保存点---因为s1中这个保存点没有记录到s2保存点的信息---- SQL> rollback to savepoint s2; rollback to savepoint s2 * ERROR at line 1: ORA-01086: savepoint 'S2' never established