構文的にも意味的にも正しい SQL ステートメントがあり、それが実行されるとします。
Management Studio (またはその他のクエリ ツール) で SQL ステートメントをテストし、何かが壊れていることに気付いた場合はロールバック (別のクエリで) するにはどうすればよいですか?
ベストアンサー1
最も簡単な方法は、コードをトランザクションでラップし、T-SQL コードの各バッチを 1 行ずつ実行することです。
例えば、
Begin Transaction
-Do some T-SQL queries here.
Rollback transaction -- OR commit transaction
エラー処理を組み込む場合は、TRY...CATCH BLOCK を使用します。エラーが発生した場合は、catch ブロック内でトランザクションをロールバックできます。
例えば:
USE AdventureWorks;
GO
BEGIN TRANSACTION;
BEGIN TRY
-- Generate a constraint violation error.
DELETE FROM Production.Product
WHERE ProductID = 980;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
END CATCH;
IF @@TRANCOUNT > 0
COMMIT TRANSACTION;
GO
詳細については、次のリンクを参照してください。