程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle中DDL語句對事務的影響

Oracle中DDL語句對事務的影響

編輯:Oracle教程

Oracle中DDL語句對事務的影響




1.Oracle中DDL語句對事務的影響

  在Oracle中,執行DDL語句(如Create Table、Create View等)時,會在執行之前自動發出一個Commit命令,並在隨後發出一個Commit或者Rollback命令,也就是說,DDL會象如下偽碼一樣執行:

  Commit;DDL_Statement;

  If (Error) then

  Rollback;

  Else

  Commit;End if;

  我們通過分析下面例子來看Oracle中,DDL語句對事務的影響:

  Insert into some_table values(‘Before’);Creaate table T(x int);

  Insert into some_table values(‘After’);Rollback;

  由於在Oracle執行Create table語句之前進行了提交,而在Create table執行後也會自動發出Commit命令,所以只有插入After的行被回滾,而插入Before的行不會被回滾,Create table命令的結果也不會被回滾,即使Create table語句失敗,所進行的Before插入也會被提交。如果最後發出Commit命令,因為插入Before及Create table的操作結果已經在之前提交,所以Commit命令影響的只有插入After的操作。

  2.SQL Server中DDL語句對事務的影響

  在SQL Server中,DDL語句對事務的影響與其他DML語句相同,也就是說,在DML語句發出之前或之後,都不會自動發出Commit命令。

  在SQL Server 2000中,對於與上面Oracle同樣的例子,最後發出Rollback後,數據庫會回滾到插入Before之前的狀態,即插入Before和After的行都會被回滾,數據表T也不會被創建。

  如果最後發出Commit操作,則會把三個操作的結果全部提交。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved