抱歉,这是一个很难说的问题:
假设我有一个执行一些插入的存储过程。它被包装在一个事务中并提交,前提是每个事务都在该事务中顺利进行。
现在,我从 .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
}
}
}
好的,这就是流程的框架。我在代码中实际做的是检查三个进程中每个进程的返回值,如果它们返回 false,我会抛出一个触发回滚的异常。
我想知道的是,如果这些存储过程中有提交,我在 .net 函数中的回滚是否仍然有效?还是完全没用?