Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理
生活随笔
收集整理的這篇文章主要介紹了
Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Oracle PL/SQL 程序設計讀書筆記 - 第14章 DML和事務管理
Oracle PL/SQL 程序設計讀書筆記 - 第14章 DML和事務管理
ACID原則:即一個事務具有原子性、一致性、隔離性和持久性。
- 原子性:一個事務所涉及的改變是原子的:這些改變或者全部發生或者全部不發生。
- 一致性:一個事務必須是一個正確的狀態轉換。事務中發生的行為作為一個整體不能違反狀態的任何完整性約束。
- 隔離性:很多個事務可以同時發生,不過從任何一個事務的角度來看,其他的事務看起來都是在它之前或之后發生的。
- 持久性:一旦一個事務成功結束,狀態的改變就是永久的了。可能經受住以后發生的任何故障。
14.1.1 DML語句快速入門。
共有4個DML語句:INSERT,UPDATE,DELETE,MERGE
14.1.2 DML操作游標屬性
Oracle允許我們通過一些特殊的隱式游標屬性訪問最后一次運行的隱式游標的信息。 首先,記住隱式游標屬性的值總是屬于最后一次執行的SQL語句,而不管隱式游標是哪一個塊中執行的。
- SQL%FOUND 如果有一行或者多行記錄被成功修改返回TRUE
- SQL%NOTFOUND 如果DML語句沒有修改任何行則返回TRUE
- SQL%ROWCOUNT 返回被DML語句修改的記錄行數
- SQL%ISOPEN 對于隱式游標總是返回FALSE,因為ORACLE數據庫會自動打開和關閉這些游標。
14.1.3 從DML語句返回信息
- 可以在DML語句中加處RETURNING子句,而獲得DML所操作的信息。可以通過BULK COLLECT語句返回一個集合。
- 可以通過關鍵字ROW對一整條記錄進行更新。
14.2 事務管理
14.2.1 COMMIT語句
COMMIT [WORK][COMMENT text];- WORK 是一個可選的關鍵字,主要用于改善代碼的可讀性。
14.2.2 ROLLBACK語句
ROLLBACK [WORK][TO [SAVEPOINT] savepoint_name]14.2.3 SAVEPOINT語句
SAVEPOINT savepoint_name;14.2.4 SET TRANSANCTION命令
- SET TRANSACTION READY ONLY;
把當前事務定義成只讀的
- SET TRANSACTION READ WRITE;
把當前的事務定義成可讀寫的,并且這也是缺省的設置。
- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE | READ COMMITTED;
- SET TRANSACTION USE ROLLBACK SEGMENT rollback_segment;
14.2.5 LOCK語句
LOCK TABLE table_reference_list IN lock_mode MODE [NOWAIT];14.3 自治事務
如果把一個PL/SQL塊定義成自治事務的,我們實際是把這個塊中的DML語句和調用程序的事務環境完全的隔離開。這個塊就成為一個由其他事務啟動的獨立的事務,前一個事務就被叫做主事務。
14.3.1 定義自治事務
PRAGMA AUTONOMOUS_TRANSACTION;在聲明單元加上上面語句就可以了。
14.3.2 自治事務的規則和限制
- 如果自治事務要訪問的資源已經被主事務持有,我們的程序就發生了死鎖。
- 我們不能只用一個PRAGMA聲明就把一個包中的所有子程序全部標志成自治的。我們必須對位于包體的每個程序的聲明單元都明確地指定自治事務。這個規則的一個后杲就是我們無法通過包規范來區分到底哪一個程序是自治事務的。
- 如果想從一個已經執行了至少一個DML語句的自治事務程序沒有任何錯誤的退出,我們必須明確地執行一個提交或者回滾。
- COMMIT和ROLLBACK語句只是結束了活動的自治事務,但不會終止自治例程。
- 我們只能回滾到當前會話內創建的保存點。如果是在一個自治事務中,我們就不能回滾到主事務創建的保存點。
- 數據庫參數文件中的TRANSACTIONS參數指定的是一個會話內可以并發的最大事務數量。默認是75。
14.3.3 事務的可見性
自治事務的缺少行為是,只要在自治事務中執行了COMMIT或者ROLLBACK,這些改變立即就對主事務可見。但如果這些改變后的信息不應該在主事務中看到。
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;14.3.4 什么時候使用自治事務
- 日志機制
- 在數據庫觸發器中執行提交和回滾
- 可重用的應用組件
- 避免查詢時出現突變表觸發器錯誤
- 在修改這個表的SQL中調用用戶自定義函數
- 重試計數器
轉載于:https://www.cnblogs.com/tjpanda88/archive/2011/12/14/2287042.html
總結
以上是生活随笔為你收集整理的Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: network packet
- 下一篇: serial driver 1