我在一个作业中有几个存储过程,在其中一个中我开始一个事务以删除一些行,如果行大于 10,那么我回滚。但是,如果没有我不想立即提交,因为 2 存储过程稍后我会做类似的事情。但是,如果在这种情况下计数大于 10,我希望它一直回滚到我盯着事务时(两个存储过程之前)
是否可以在存储过程中启动事务并在某处最后进行多次回滚和提交,或者我是否必须将所有代码放入 1 个存储过程中才能做到这一点?
我在一个作业中有几个存储过程,在其中一个中我开始一个事务以删除一些行,如果行大于 10,那么我回滚。但是,如果没有我不想立即提交,因为 2 存储过程稍后我会做类似的事情。但是,如果在这种情况下计数大于 10,我希望它一直回滚到我盯着事务时(两个存储过程之前)
是否可以在存储过程中启动事务并在某处最后进行多次回滚和提交,或者我是否必须将所有代码放入 1 个存储过程中才能做到这一点?
这听起来非常容易失败。
无论如何,您需要在代码中启动事务,然后在使用相同的连接时执行 procs。一旦所有的过程都执行完毕,代码就会提交或回滚。
假设这是c#
,请参阅以下问题以获取答案:Call multiple SQL Server stored procedures in a transaction
您可以编写多个存储过程,然后以嵌套方式执行它们。您可以声明变量以获取结果并使用 if 语句来提交或引发 catch 块或回滚事务的错误