当前位置: 首页 > 面试题库 >

SQL Server:如何知道是否有任何行在引用要删除的行

公良向阳
2023-03-14
问题内容

如果有任何行引用要通过FK删除的行,则无法删除该行。

执行DELETE语句之前是否可以知道是否有任何行在引用要删除的行?


问题答案:

该脚本将显示所有具有引用您要删除的行的行的表:

declare @RowId int = 1
declare @TableName sysname = 'ParentTable'

declare @Command varchar(max)

select @Command = isnull(@Command + ' union all ', '') + 'select ''' + object_name(parent_object_id) + 
    ''' where exists(select * from ' + object_name(parent_object_id) + ' where ' + col.name+ ' = ' + cast(@RowId as varchar) + ')' 
from sys.foreign_key_columns fkc
    join sys.columns col on
        fkc.parent_object_id = col.object_id and fkc.parent_column_id = col.column_id
where object_name(referenced_object_id) = @TableName

execute (@Command)

假定外键不是复合键。



 类似资料:
  • 问题内容: 即使文件在远程http服务器上不存在,它也会以静默方式返回,它只是将html页面保存到命名文件中。例如: 即使abc.jpg在google.com服务器上不存在,它只是默默返回,生成的不是有效的jpg文件,它实际上是html页面。我猜返回的标头(一个httplib.HTTPMessage实例)可以用来实际上告诉检索是否成功,但是我找不到的任何文档。 有人可以提供有关此问题的一些信息吗?

  • (我已经删除了上一个,所以我想你可以在编辑中找到它) 编辑 所以按照bad_coder在评论中告诉的以及他分享的链接中的大多数答案,我点击了“选项显示所有”,我得到了这个 1) 这里唯一有意义的是点击“”按钮,所以我点击了它 2) 现在我应该用路径替换突出显示的部分(换句话说,我在cmd中键入“where python”后得到的路径) 3) 这就是我发现的。那么我应该在突出显示的部分复制并粘贴哪一

  • HBase如何知道一行是否包含特定的列?例如,考虑以下情况: null 提前感谢!

  • 问题内容: 我正在尝试使用JDBC在Oracle 11g数据库上执行DDL语句。我现在用的是这样做的的类。 以下是执行查询并尝试确定查询结果的代码段: 我不是数据库专家,但是是否存在DDL语句执行失败且不引发的情况?如果没有,则无需捕获execute方法返回的内容。缺少表示DDL语句成功执行。 我正在关注的教程建议对DDL语句使用此方法: 尽管Jdbc文档建议使用来执行DDL语句。两者中哪一个更可

  • 问题内容: 我的流程中有一个方法,仅当该流程不在后台时才应运行。如何动态测试当前进程是否在后台?谢谢 问题答案: 查看Unix FAQ:进程如何检测它是否在后台运行? 普遍的答案是:您无法确定您是否在后台运行。 但是您可以检查stdin是否为终端:

  • 问题内容: Python中是否有一种方法可以确定对象是否具有某些属性?例如: 在使用a属性property之前,如何知道该属性是否存在? 问题答案: 尝试: 编辑:请参阅下面的的答案,他为寻求宽恕提供了很好的建议!一个非常的方法! 中的一般做法是,如果大多数情况下该属性很可能存在,则只需对其进行调用,然后让该异常传播,或者使用块将其捕获。这可能会比快。如果该属性在大多数时间可能不存在,或者你不确定