BeginTrans用于開始一個事物;RollbackTrans用于回滾事務;CommitTrans用于提交所有的事務處理結果,即確認事務的處理
十載專注成都網(wǎng)站制作,成都企業(yè)網(wǎng)站建設,個人網(wǎng)站制作服務,為大家分享網(wǎng)站制作知識、方案,網(wǎng)站設計流程、步驟,成功服務上千家企業(yè)。為您提供網(wǎng)站建設,網(wǎng)站制作,網(wǎng)頁設計及定制高端網(wǎng)站建設服務,專注于成都企業(yè)網(wǎng)站建設,高端網(wǎng)頁制作,對橡塑保溫等多個領域,擁有多年的網(wǎng)站運維經驗。
BeginTrans和CommitTrans 用于標記事務的開始和結束,在這兩個之間的語句,就是作為事務處理的語句
oracle的事務是以session開始登錄后的第一條DML語句開始的,然后以DDL(drop,create,alter,rename等),TCL的rollback,commit,DCL(grant,revoke)結束。
當然你也可以手動設置事務屬性,如只讀事務或者順序事務:
set transaction read only
set transaction isolation level SERIALIZABLE
一個事務是指:由一系列數(shù)據(jù)庫操作組成的一個完整的邏輯過程。例如銀行轉帳,從原賬戶扣除金額,以及向目標賬戶添加金額,這兩個數(shù)據(jù)庫操作的總和,構成一個完整的邏輯過程,不可拆分。這個過程被稱為一個事務,具有ACID特性。
1:原子性(Atomicity,或稱不可分割性)
2:一致性(Consistency)
3:隔離性(Isolation,又稱獨立性)
4:持久性(Durability)
oracle使用語句savepoint sp_begintran開啟顯式事務,鎖本身和事務是沒有關系的,只要是數(shù)據(jù)庫的操作都會產生鎖。處于事務中的SQL語句只有這個事務提交(commit)之后,事務中的SQL語句影響的表記錄上的鎖才會釋放。鎖常見有共享鎖(select語句產生)和排它鎖(DML語句產生),如果一個表上加載有共享鎖,還可以疊加共享鎖,但不能疊加排它鎖。如果一個表上加載有排他鎖,就什么鎖都不能加了,也就是說如果DML語句占用過多的時間,這些數(shù)據(jù)庫效率就不高,就需要優(yōu)化,當然select語句性能低了也不行。
每個存儲過程可以不用顯式事務,它本身就為你開啟了一個隱式事務,如果需要開啟顯示事務,就通過savepoint sp_begintran開啟,無論是不是顯式還是隱式事務,你都得通過commit work提交事務,通過exception捕捉SQL語句異常,在異常發(fā)生時需要回滾事務(rollback work)。
OracleTransaction 類包含多個屬性,其中的兩個為 Connection(指定與事務關聯(lián)的數(shù)據(jù)庫連接)和 IsolationLevel(指定事務隔離級別);本文稍后將向您介紹更多有關事務隔離級別的內容。 OracleTransaction 類包含許多操控事務的方法。您可以使用 Commit() 方法永久提交 SQL 語句,并可以使用 Rollback() 撤銷這些語句。您還可以使用 Save() 在事務中設置一個保存點。 我現(xiàn)在將帶著您逐步完成兩個示例程序 ― 一個用 C# 編寫 (TransExample1.cs),另一個用 VB.NET 編寫 (TransExample1.vb)。這些程序演示了如何執(zhí)行一個包含了兩條 INSERT 語句的事務。第一條 INSERT 語句將在表 product_types 中添加一行,第二條將在表 products 中添加一行。 導入命名空間以下C# 程序語句指定在程序中使用 System 和 Oracle.DataAcess.Client 命名空間: using System; using Oracle.DataAccess.Client;下面是等價的 VB.NET 語句: Imports System Imports Oracle.DataAccess.ClientOracle.DataAccess.Client 命名空間是 ODP.NET 的一部分,它包含許多類,其中有OracleConnection、OracleCommand 和 OracleTransaction。示例程序用到了這些類。
事務是為了保證數(shù)據(jù)的完整性而設置的,在使用事務時,如果你是使用程序進行控制的話,一般都會自動提交事務的,需要手動進行事務的操作的是在進行批處理的時候,為了保證數(shù)據(jù)要么一起成功要么一起失敗,在開始數(shù)據(jù)的插入或者刪除之前,要把事務的自動提交改為false,然后才能執(zhí)行相關的SQL語句,當SQL無異常全部執(zhí)行完以后,再手動提交就可以了
名稱欄目:oracle如何實現(xiàn)事務,oracle開啟事務sql
本文來源:http://m.kartarina.com/article24/dseioje.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google、定制網(wǎng)站、用戶體驗、外貿建站、做網(wǎng)站、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)