您的位置:首页 > 数据库 > Oracle

oracle数据库事务相关【weber出品必属精品】

2014-08-20 21:43 281 查看
事务的概念:
事务:一个事务由一组构成一个逻辑操作的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: