1
所以这就是问题所在。.net Oracle Data Provider事务回滚不起作用
我需要插入到tableA中并获取其新的行ID。之后,我必须将该ID插入到tableB中。我必须在insertA插入tableA之后提交,这样当我尝试插入tableB时,我不会得到外键异常。
现在,我的理解是,如果在插入到tableB的函数中引发异常,则当try-catch块捕获异常时,原始插入到表中的内容将被回滚。这不是那样做的。
我在某个地方犯了一个错误,但我不知道在哪里。有没有办法在这里完成我所需要的?
try
{
tableAinsert.ExecuteNonQuery();
transaction.Commit();
id= Int32.Parse(tableAinsert.Parameters["id"].Value.ToString());
if (vsType == "I")
{
tableBinsert(vsType, eventId, id);
}
}
catch (Exception err)
{
transaction.Rollback();
throw (err);
}