Oracle 9i 交易處理

來源:互聯網
上載者:User
   事務是Oracle 9i中進行資料庫操作的基本單位,在PL/SQL程式中,可以使用3個交易處理控制命令。

commit命令

    commit是事務提交命令。在Oracle 9i資料庫中,為了保證資料的一致性,在記憶體中將為每個客戶機建立工作區,客戶機對資料庫進行操作處理的事務都在工作區內完成,只有在輸入commit命令後,工作區內的修改內容才寫入到資料庫上,稱為物理寫入,這樣可以保證在任意的客戶機沒有物理提交修改以前,別的客戶機讀取的後台資料庫中的資料是完整的、一致的,如圖9.26所示。

    在【SQLPlus Worksheet】中可以執行下列PL/SQL程式開啟自動認可功能。這樣每次執行PL/SQL程式都會自動進行事務提交。執行結果如圖9.27所示。
    ―――――――――――――――――――――――――――――――――――――
    set auto on;
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\setautocommiton.sql。

    相應的,取消自動認可功能的PL/SQL程式如下。
    ―――――――――――――――――――――――――――――――――――――
    set auto off;
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\setautocommitoff.sql。

rollback命令

    ollback是交易回復命令,在尚未提交commit命令之前,如果發現delete、insert和update等操作需要恢複的話,可以使用rollback命令復原到上次commit時的狀態。
    下面以delete命令為例示範如何復原。
    (1)首先關閉自動認可功能。
    (2)在【SQLPlus Worksheet】中執行下列SQL程式,查看scott.emp資料表中的所有資料,執行結果如圖9.28所示。
    ―――――――――――――――――――――――――――――――――――――
    select * from scott.emp;
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\selectemp.sql。

    (3)在【SQLPlus Worksheet】中執行下列SQL程式,刪除scott.emp資料表中的所有資料。執行結果如圖9.29所示。
    ―――――――――――――――――――――――――――――――――――――
    delete from scott.emp;
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\deleteemp.sql。

    (4)在【SQLPlus Worksheet】中執行下列SQL程式,查詢刪除資料表scott.emp後的結果。執行結果如圖9.30所示。
    ―――――――――――――――――――――――――――――――――――――
    select * from scott.emp;
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\selectemp.sql。

    (5)在【SQLPlus Worksheet】中執行以下SQL程式,完成事務的復原。執行結果如圖9.31所示。
    ―――――――――――――――――――――――――――――――――――――
    rollback;
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\rollbackemp.sql。

    (5)在【SQLPlus Worksheet】中執行selectemp.sql檔案,執行結果如圖9.28所示,表明成功復原了事務。

savepoint命令

    savepoint是儲存點命令。事務通常由數條命令組成,可以將每個事務劃分成若干個部分進行儲存,這樣每次可以復原每個儲存點,而不必復原整個事務。文法格式如下。
    建立儲存點:savepoint 儲存點名;
    復原儲存點:rollback to 儲存點名;
    下面介紹如何使用儲存點。
    (1)在【SQLPlus Worksheet】中執行以下SQL程式,程式完成向scott.emp資料表中插入一條記錄。執行結果如圖9.32所示。
    ―――――――――――――――――――――――――――――――――――――
    insert into scott.emp(empno,ename,sal) values(9000,'wang',2500);
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\insertemp.sql。

    (2)在【SQLPlus Worksheet】中執行下列SQL代碼,完成建立儲存點的操作。執行結果如圖9.33所示。
    ―――――――――――――――――――――――――――――――――――――
    savepoint insertpoint;
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\ createsavepoint.sql。

    (3)在【SQLPlus Worksheet】中可以執行其他的SQL語句。
    (4)在【SQLPlus Worksheet】中執行下列SQL代碼,程式完成復原到指定的儲存點“insertpoint”。執行結果如圖9.34所示。
    ―――――――――――――――――――――――――――――――――――――
    rollback to insertpoint;
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\ rollbacksavepoint.sql。

    (5)可以執行selectemp.sql檔案,查詢復原前後的資料。


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。