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

前端之家收集整理的这篇文章主要介绍了SQL Server:如何知道任何行是否引用要删除的行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果任何行引用要通过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)

假设外键不复合.

猜你在找的MsSQL相关文章