一尘不染

如何预览破坏性的SQL查询?

sql

在SQL Server Management
Studio中编写破坏性查询(例如DELETE或UPDATE)时,我总是发现自己希望在不实际运行查询的情况下预览查询结果。Access非常方便,您可以执行此操作,但是我更喜欢手工编写我的SQL,可悲的是,Access非常不擅长。

所以我的问题是双重的:

  1. 是否有用于SSMS的附加程序,或提供了具有良好SQL手动编码功能的单独工具,该工具还可以预览破坏性查询的结果(类似于Access)?

  2. 是否有任何“手工”进行预览的技术或最佳做法;例如,以某种方式使用交易?

在我看来,做这种事情从根本上来说很重要,但是我似乎无法通过Google找到任何东西(我可能只是在寻找错误的东西-
我对此事非常无知)。目前,我正在采取一种比较繁琐的方法来对选择/删除/更新行进行注释和注释,并确保进行备份。当然有更好的方法了吗?

有人可以帮忙吗?


阅读 169

收藏
2021-05-05

共1个答案

一尘不染

我将使用SQL SERVER 2008及以上版本中的OUTPUT子句…

输出子句(Transact-SQL)

就像是…

BEGIN TRANSACTION

DELETE [table] OUTPUT deleted.* WHERE [woof]

ROLLBACK TRANSACTION

INSERT和UPDATE也可以使用“插入”表。MSDN文章涵盖了所有内容。

编辑:

就像在事务中执行SELECT然后DELETE的其他建议一样,除了它实际上一起执行之外。因此,您打开一个事务,使用OUTPUT子句删除/插入/更新,并且在ALSO输出已完成的操作的同时进行了更改。然后,您可以选择回滚或提交。

2021-05-05