您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Oracle系列中事務有什么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Oracle系列中事務有什么用”這篇文章吧。
回顧什么是事務? 一個不可分割的子操作形成一個整體,該整體要么全部執行成功,要么全部執行失敗。例如:轉帳 回顧為什么要用事務? 如果不用事務的話,為轉帳為例,可能出現一個用戶錢增加了,另一個用戶錢不變 回顧編程中,事務可用于哪一層? 事務放在業務層 回顧jdbc編程中,如何使用事務? connection.setAutoCommit(false); pstmt.executeUpdate(); connection.commit(); connection.rollback(); 回顧hibernate編程中,如何使用事務? transaction.begin(); session.save(new User()); transaction.commit(); transaction.rollback(); 回顧spring編程中,如何使用事務? spring可以分為二種 >編程式事務,藕合 >聲明式事務,解藕,提倡 |
Oracle的事務只針對DML操作,即select/insert/update/delete
回顧MySQL的事務開始:start transaction |
Oracle的事務開始:第一條DML操作做為事務開始
Oracle的提交事務
(1)顯示提交:commit
(2)隱藏提交:DDL/DCL/exit(sqlplus工具)
注意:提交是的從事務開始到事務提交中間的內容,提交到ORCL數據庫中的DBF二進制文件
Oracle的回滾事務
(1)顯示回滾:rollback
(2)隱藏回滾:關閉窗口(sqlplus工具),死機,掉電
注意:回滾到事務開始的地方
回顧什么是回滾點?
在操作之間設置的一個標志位,用于將來回滾之用
回顧為什么要設置回滾點?savepoint a;rollback to savepoint a;
如果沒有設置回滾點的話,Oracle必須回滾到事務開始的地方,其間做的一個正確的操作也將撤銷
使用savepoint 回滾點,設置回滾點a
savepoint a;
使用rollback to savepoint,回滾到回滾點a處
rollback to savepoint a;
Oracle提交或回滾后,原來設置的回滾點還有效嗎?
原回滾點無效了
Oracle之所以能回滾的原因是?
主要機制是實例池
回顧MySQL支持的四種事務隔離級別及能夠解決的問題
(1)read uncommitted -- 不能解決任何缺點
(2)read committed -- 臟讀,Oracle默認
(3)reapatable read -- 不可重復讀,臟讀,MySQL默認
(4)serializable -- 幻讀,不可重復讀,臟讀,效率低
注意:jdbc/dbutils速度快,但書寫煩
mybaits速度中等,但書寫"中等"
hibernate速度慢,但書寫"爽"
Oracle支持的二種事務隔離級別及能夠解決的問題
Oracle支持:read committed 和 serializable
Oracle中設置事務隔離級別為serializable
set transaction isolation level serializable;
演示二個用戶同時操作emp表,刪除KING這條記錄,會有什么后果?
因為有隔離級別的存在,所以不會出現二個用戶都刪除了KING這條記錄,
一定是一個用戶刪除KING成功,在該用戶沒有提交的情況下,另一個用戶等待
以上是“Oracle系列中事務有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。