DDL操作的自動提交

壹頁書發表於2014-01-28
Oracle的autocommit永遠是false.
但是在執行DDL操作之後,會隱式提交,所以DDL操作不能回滾。

其實在DDL操作之前,也有一個隱式提交

測試如下程式碼:

  1. create table test(id int);
  2. create table t1(id int);

  3. declare
  4. begin
  5.     insert into test values(10);
  6.     execute immediate 'create table t1(id int);';
  7.     rollback;
  8. end;
  9. /
新建一個表test和t1,在程式碼中向test表插入一行,然後動態SQL建表。
因為t1表已經存在,所以動態SQL建表將報錯,模擬DDL執行異常的情況。
這個時候進行回滾,是不能撤銷test表中插入的資料的。
因為在DDL執行之前,已經隱式的提交了事物。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1076352/,如需轉載,請註明出處,否則將追究法律責任。

相關文章