立即提交 transactionscope 中的一些 oracle 更改?

Commit some oracle changes in transactionscope immediately?

我有以下代码:

using (TransactionScope tran = new TransactionScope())
{
   try
   {
       OracleConnection _transactionDB = new OracleConnection("ConnectionString");
       _transactionDB.Open();

       OracleCommand _command = new OracleCommand();
       _command.Connection = _transactionDB;
       _command.CommandType = CommandType.Text;
       _command.CommandText = "INSERT INTO table (id, text) VALUES (3, 'test')";
       int rowsAffected = _command.ExecuteNonQuery();

       OracleCommand _command2 = new OracleCommand();
       _command2.Connection = _transactionDB;
       _command2.CommandType = CommandType.Text;
       _command2.CommandText = "INSERT INTO log (id, text) VALUES (3, 'Success')";
       int rowsAffected2 = _command2.ExecuteNonQuery();

       //...some other actions(DB changes)
   }
}

是否有立即提交第二个插入的解决方案,无论事务范围是否失败都无关紧要?这个插入在数据库中应该总是可见的,以便更容易地看到这个事务中发生了什么。

在oracle中有一个'AUTONOMOUS_TRANSACTION Pragma',就像我需要的函数,在C#中。

谢谢, 迈克尔

也许这会解决你的问题:

写一个Oracle PL/SQL程序写日志。这个过程必须有 pragma "AUTONOMOUS_TRANSACTION"。然后调用这个过程而不是直接插入。