所以这就是问题所在。
我需要插入 tableA 并获取它的新行 ID。之后,我必须将该 id 插入到 tableB 中。我必须在插入 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);
}