我在工作中曾经在我们的一个内部测试数据库上犯过一个愚蠢的错误。我正在更新刚刚添加的记录,因为我犯了一个拼写错误,但这导致许多记录被更新,因为在 where 子句中我使用了外键而不是我刚刚添加的特定记录的唯一 id
我们的一位高级开发人员告诉我在实际编辑之前进行选择以测试它将影响哪些行。除此之外,有没有一种方法可以执行查询,查看结果,但在我告诉它这样做之前不将其提交到数据库?下次我可能就没那么幸运了。这是一项只有高级开发人员才能进行实时更新的好工作!。
最佳答案
在我看来,你只需要养成打开交易的习惯即可:
BEGIN TRANSACTION;
UPDATE [TABLENAME]
SET [Col1] = 'something', [Col2] = '..'
OUTPUT DELETED.*, INSERTED.* -- So you can see what your update did
WHERE ....;
ROLLBACK;
看到结果后再次运行,将 ROLLBACK 更改为 COMMIT,就完成了!
如果您使用的是 Microsoft SQL Server Management Studio,您可以转到工具 > 选项... > 查询执行 > ANSI > SET IMPLICIT_TRANSACTIONS
,SSMS 将自动为您打开事务。只是不要忘记在必须时提交,并且当您不提交/回滚关闭连接时,您可能会阻止其他连接。
关于sql - 如何在运行 sql server 之前先测试您的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24579551/