【发布时间】:2011-05-12 01:14:52
【问题描述】:
我使用过其他 SQL 工具,其中一些工具允许我在提交前查看威胁查询的输出。我喜欢这两个步骤的过程(所以我可以仔细检查我没有做坏事)。
SQL Server 2008 R2 中是否有一种方法可以“执行”查询,查看受影响行的输出,然后选择接受还是放弃提交?
编辑:
我还发现了另一个问题,使用 OUTPUT 子句提出了不同的答案。
【问题讨论】:
标签: sql-server sql-server-2008-r2
我使用过其他 SQL 工具,其中一些工具允许我在提交前查看威胁查询的输出。我喜欢这两个步骤的过程(所以我可以仔细检查我没有做坏事)。
SQL Server 2008 R2 中是否有一种方法可以“执行”查询,查看受影响行的输出,然后选择接受还是放弃提交?
编辑:
我还发现了另一个问题,使用 OUTPUT 子句提出了不同的答案。
【问题讨论】:
标签: sql-server sql-server-2008-r2
是的,这是可能的。您可以使用会话选项 SET IMPLICIT_TRANSACTIONS ON 或创建如下显式事务。
BEGIN TRAN
UPDATE YourTable
SET foo=1
/*To Review Changes can use OUTPUT clause here...*/
OUTPUT INSERTED.*, DELETED.*
WHERE bar=2
/*... or a SELECT against the table*/
SELECT *
FROM YourTable
WHERE bar=2
-- Execute the COMMIT or ROLLBACK commands when ready
但是您应该知道,您的打开事务将保持锁定直到事务完成,这可能会阻塞其他事务,因此在任何多用户环境中都应谨慎使用。
【讨论】:
BEGIN TRAN TEST
UPDATE TABLE_NAME
SET Col='TEST'
查看结果后,您可以COMMIT 或ROLLBACK 进行交易。
使用SELECT @@TRANCOUNT 查看您当前连接中的未处理事务数。
【讨论】: