申し訳ありませんが、それは言葉にするのが難しい質問でした:
挿入を行うストアド プロシージャがあるとします。すべてがそのトランザクション内でうまくいけば、それはトランザクションにラップされ、コミットされます。
ここで、.net 関数からそのトランザクションを呼び出します。この関数では、同様の方法で構築されたストアド プロシージャも呼び出すいくつかの関数を呼び出す必要があります。例:
bool SaveTicket()
{
using(MyTransaction)
{
try
{
SaveTicketInfo(); //calls sproc 1
SaveComments(); //calls sproc 2
SaveAttachments(); //calls sproc 3
}
catch(Exception)
{
MyTransactionRollback(); //i would normally wrap this in its own try/catch
}
}
}
これがプロセスの骨子です。コードで実際に行っていることは、3 つのプロセスそれぞれの戻り値をチェックすることです。それらが false を返す場合は、ロールバックをトリガーする例外をスローします。
私が疑問に思っているのは、これらのストアド プロシージャにコミットがある場合、.net 関数でのロールバックは引き続き機能するのでしょうか? それとも全く駄目ですか?