加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:12:38 所属栏目:MsSql教程 来源:网络整理
导读:如果任何行引用要通过FK删除的行,则不能删除行. 在执行DELETE语句之前,是否有可能知道行是否引用要删除的行? 解决方法 此脚本将显示具有引用要删除的行的行的所有表: declare @RowId int = 1declare @TableName sysname = 'ParentTable'declare @Command va
如果任何行引用要通过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)

假设外键不复合.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读