これが問題です。
tableA に挿入して、その新しい行 ID を取得する必要があります。その後、その ID を tableB に挿入する必要があります。tableB に挿入しようとしたときに外部キー例外が発生しないように、tableA への挿入後にコミットする必要があります。
ここで、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);
}