假设我有一个语法和语义正确的 SQL 语句,因此它可以执行。
在 Management Studio(或任何其他查询工具)中,如何测试 SQL 语句,如果我发现它们破坏了某些内容,则回滚(在单独的查询中?)
最佳答案
最简单的方法是将代码包装在事务中,然后逐行执行每批 T-SQL 代码。
例如,
Begin Transaction
-Do some T-SQL queries here.
Rollback transaction -- OR commit transaction
如果您想合并错误处理,可以使用 TRY...CATCH block 来实现。如果发生错误,您可以在 catch block 中回滚事务。
例如:
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
请参阅以下链接了解更多详细信息。
关于sql - 在 MS SQL Server Management Studio 中处理事务的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/506602/