熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle數據完整性嵌套事務調用分析研究

2013-11-13 15:28:50  來源: Oracle 
本文分析一個問題的多種可能讀者可以根據現象來判斷您屬於那種情況來最短時間內解決問題

  為了保護數據的完整性我們用了很多的方法比如數據表的主鍵約束外鍵約束觸發器等等我們今天討論的就是在處理數據直接的事務的時候保存數據的完整性

  比如我在一個存儲過程中Proc_SaveBill保存一張單據調用一個函數Func_GenerateCode來生成一個單據的編號假如我的這個函數是從一個存有最大編號的表中取出的並且把編號加一大家可能會想象的可能產生的問題就是如果我在Proc_SaveBill中的保存之前通過Func_GenerateCode得到一個編號如果後面的保存不成功怎麼辦是不是就丟了一個編號因為我調用一次Func_GenerateCode就會增加一個編號的那麼為了使我們的數據完整不至於丟單就會使用事務會滾

  現在又有問題了存儲過程會會滾到函數中嘛?

  答案是如果函數中有事務或有commit語句那麼是會滾不到否則可以會滾因為事務是會滾到上一個committ或rollback之後的所有事物所以我在這裡說明是為了提醒大家考慮事務的嵌套回滾的一些方法但是在存儲過程調用存儲過程中如果被調用的存儲過程執行沒有錯誤那麼很遺憾是會滾不了的為了解決這個問題Oracle中用自治事務來處理上述出現的問題在存儲過程的is\as後面聲明PRAGMA AUTONOMOUS_TRANSACTION 自治事務防止嵌套提交使事務在自己的事務區內提交或回滾不會影響其他的事務


From:http://tw.wingwit.com/Article/program/Oracle/201311/16783.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.