BeginTransaction(IsolationLevel)
このメソッドは、ローカル・トランザクションを指定された分離レベルで開始します。
宣言
// C#
public OracleTransaction BeginTransaction(IsolationLevel isolationLevel);パラメータ
-
isolationLevel新規トランザクションの分離レベル
戻り値
OracleTransactionオブジェクトは、新規トランザクションを表します。
実装
IDbConnection
例外
InvalidOperationException - トランザクションはすでに開始されています。
ArgumentException - 指定したisolationLevel値が無効です。
備考
分離レベルIsolationLevel.ReadCommittedおよびIsolationLevel.Serializableがサポートされています。
BeginTransactionメソッドは、IsolationLevel.Serializable分離レベルをサポートしていますが、System.TransactionsおよびTransactionScopeを使用する場合、シリアライズ可能なトランザクションはサポートされません。
他の分離レベルを要求すると、例外が発生します。
ローカル・トランザクションがすでに暗黙的に開始されている場合、BeginTransaction()のコールでは、そのトランザクションが継承されます。
トランザクションは、BeginTransaction()を使用して明示的に作成されている場合は、OracleConnectionメソッドまたはOracleTransactionメソッドのどちらかを使用して操作できます。ただし、どちらかのオブジェクトでCommit()またはRollback()が呼び出されてそのトランザクションが終了すると、それ以降はOracleTransactionを使用できなくなります。
BeginTransaction(IsolationLevel)メソッドは、OracleConnectionのIsolationLevelプロパティをオーバーライドします。トランザクションがコミットまたはロールバックされると、その接続のIsolationLevelが以前の値に戻ります。
このメソッドが正常に呼び出されると、自動コミットが無効になります。
例
// C#
using System;
using System.Data;
using Oracle.DataAccess.Client;
class BeginTransactionSample
{
static void Main()
{
string constr = "User Id=scott;Password=tiger;Data Source=oracle";
OracleConnection con = new OracleConnection(constr);
con.Open();
// Create an OracleCommand object using the connection object
OracleCommand cmd = con.CreateCommand();
// Start a transaction
OracleTransaction txn = con.BeginTransaction(IsolationLevel.ReadCommitted);
// Update EMP table
cmd.CommandText = "update emp set sal = sal + 100";
cmd.ExecuteNonQuery();
// Rollback transaction
txn.Rollback();
Console.WriteLine("Transaction rolledback");
// Clean up
txn.Dispose();
cmd.Dispose();
con.Dispose();
}
}