如何回滚OracleBulkCopy()插入的行?

时间:2009-07-21 21:27:59

标签: .net oracle oracle10g

我试图回滚外部事务并尝试中止OracleBulkCopy()但它仍然插入了所有行。谁知道怎么做?

案例1:没有用。无论如何都要插入所有行。

OracleConnection connection = new OracleConnection(ConnectionString);
connection.Open();
OracleTransaction trans = connection.BeginTransaction();
OracleBulkCopy bulkCopy = new OracleBulkCoopy(connection,OracleBulkCopyOptions.Default);
bulkCopy.DestinationTableName = "SomeTable";    
bulkCopy.WriteToServer(SomeDataTable);
trans.Rollback();

案例2:使用OracleRowsCopiedEventHandler委托并在此回调集Oracle.RowsCopiedEventsArgs.Aborttrue,然后回滚catch块中的事务。也没用。似乎在Abort调用之前的任何插入都已经存在于数据库中。 OracleBulkCopy()不如我所看到的那样SqlBulkCopy()

感谢。 晃

2 个答案:

答案 0 :(得分:1)

好的,我从Oracle那里得到了答案。目前OracleBulkCopy不支持事务。

答案 1 :(得分:0)

您是否尝试设置OracleBulkCopyOptions.UseInternalTransaction而不是OracleBulkCopyOptions.Default,以查看异常InvalidOperationException是否被引发为documentation声明?

相关问题