我想编写一个SQL脚本来执行多个单独的SQL语句;如果任何这些陈述失败,我想回滚整个交易。所以,像这样:如果有任何语句失败,将回滚的SQL查询
BEGIN TRANSACTION
insert into TestTable values (1)
insert into TestTable values (2)
insert into TestTabe values (3)
--if any of the statements fail
ROLLBACK
--else
COMMIT
这是用于MS SQL 2008.有什么我可以做到这一点?也许某种异常处理?
我意识到在我的例子中,我可以检查TestTable中的这些值,并确定这些语句是否以这种方式失败。但实际上,我的SQL将更加复杂,我宁愿将自己抽象为知道SQL在做什么。
回滚在哪里? – Nathan 2010-02-10 17:29:08
@Nathan声明“您的LogAndRethrowError可以回滚任何注定事务”。所以你可以在Catch语句中添加ROLLBACK TRAN(或者让SP为你做)。 – Ben 2010-02-10 17:32:21
没有看到答案的某个部分。 – Nathan 2010-02-10 18:21:59