標籤:style blog color 資料 div log line on
事務的概念:
事務:一個事務由一組構成一個邏輯操作的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
-
-