我使用过其他SQL工具,有些允许我在提交之前查看威胁查询的输出.我喜欢这个两步过程(所以我可以仔细检查一下,我没做坏事).
SQL Server 2008 R2中是否有一种方法可以"执行"查询,查看受影响行的输出,然后选择接受还是丢弃提交?
编辑:
我还发现了另一个问题,使用OUTPUT子句询问相同的答案.
因此,连续第二天,有人已经清除了整个数据表,而不是他们试图删除的那一行,因为他们没有合格的where子句.
我一直在mgmt工作室选项上下,但找不到确认选项.我知道其他数据库的其他工具也有它.
我们有一个主'用户'表和许多引用UserId的表
现在,如果一切都很完美,删除用户应该像在主表中删除它们一样简单,并且ON CASCADE约束通过其余的表将它涟漪化.问题是我们不能100%确定引用的每个表中的每个FK关系(直接或间接)是否具有ON CASCADE约束.我们需要一些方法来发出删除并观察SQL Server实际触摸要删除的表.我看了这个并尝试了但它没有显示任何级联的表 - 只是主表中的条目
这是我尝试过的:
DELETE umt
OUTPUT DELETED.*
FROM [OurAppDb].[dbo].[UserMasterTable] umt
WHERE umt.UserId LIKE 'ABCDABCD-ABCD-ABCD-ABCD-ABCDABCDABCD'
Run Code Online (Sandbox Code Playgroud)
如何查看上述查询将触及的所有表格?
注意:ON CASCADE约束是我们认为在构建每个表时为每个表添加的数据库中的约束.它被添加到一个表上的示例
ALTER TABLE [dbo].[UserEmailPrefs]
WITH CHECK ADD CONSTRAINT [FK_UserEmailPrefs_UserMasterTable_UserId] FOREIGN KEY([UserId])
REFERENCES [dbo].[UserMasterTable] ([UserId])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[UserEmailPrefs] CHECK CONSTRAINT [FK_UserEmailPrefs_UserMasterTable_UserId]
GO
Run Code Online (Sandbox Code Playgroud)