OracleTransaction 類包含多個屬性,其中的兩個為 Connection(指定與事務關聯(lián)的數(shù)據(jù)庫連接)和 IsolationLevel(指定事務隔離級別);本文稍后將向您介紹更多有關事務隔離級別的內(nèi)容。 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。示例程序用到了這些類。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供阿巴嘎網(wǎng)站建設、阿巴嘎做網(wǎng)站、阿巴嘎網(wǎng)站設計、阿巴嘎網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、阿巴嘎企業(yè)網(wǎng)站模板建站服務,10余年阿巴嘎做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
無需特意使用
transaction
,當執(zhí)行DML 包括update、delete、insert時會自動啟動事務
dbdao.com
當然不是了,在Oracle中,只有DML才會開啟一個事務。也就是說Insert,Update,Delete這些都會開啟一個事務,并且該事務在commit/rollback/ddl命令時會自動結束。
其他的,像查詢語句Select(不包含F(xiàn)or Update等語句)時,是不會開啟一個事務的。
補充:
首先有一點非常抱歉,上次的回答中誤將DML寫成了DDL,可能這一點兒讓你誤解了。
“當insert語句后會打開事務,然后再來一個insert語句又會是一個新事物是嗎”這種說法是不正確的,第一個Insert沒有commit或者rollback的情況下,第二個Insert和第一個是屬于同一個事務的。因為Insert不屬于commit/rollback/ddl命令,而是屬于DML命令。
當?shù)谝粋€Insert結束后,立即執(zhí)行一個新建表,刪除表等命令(DDL命令),則會結束當前事務。
oracle的事務是以session開始登錄后的第一條DML語句開始的,然后以DDL(drop,create,alter,rename等),TCL的rollback,commit,DCL(grant,revoke)結束。
當然你也可以手動設置事務屬性,如只讀事務或者順序事務:
set transaction read only
set transaction isolation level SERIALIZABLE
BeginTrans用于開始一個事物;RollbackTrans用于回滾事務;CommitTrans用于提交所有的事務處理結果,即確認事務的處理
BeginTrans和CommitTrans 用于標記事務的開始和結束,在這兩個之間的語句,就是作為事務處理的語句
事務是為了保證數(shù)據(jù)的完整性而設置的,在使用事務時,如果你是使用程序進行控制的話,一般都會自動提交事務的,需要手動進行事務的操作的是在進行批處理的時候,為了保證數(shù)據(jù)要么一起成功要么一起失敗,在開始數(shù)據(jù)的插入或者刪除之前,要把事務的自動提交改為false,然后才能執(zhí)行相關的SQL語句,當SQL無異常全部執(zhí)行完以后,再手動提交就可以了