我想編寫一個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