如何获取无外键约束的列表?

时间:2016-08-19 15:51:45

标签: sql-server database foreign-keys

我可以使用

获取具有给定表名的外键约束列表
EXEC sp_fkeys 'TableName'

但我需要获取所有没有外键约束的表的列表。

提前致谢。

2 个答案:

答案 0 :(得分:1)

下面的查询为您提供了所有没有外键的表

SELECT s.name [Schema], t.name [Table]
FROM sys.tables AS t
INNER JOIN sys.schemas AS s
    ON t.[schema_id] = s.[schema_id]
WHERE NOT EXISTS (SELECT
    1
FROM sys.foreign_keys AS fk
WHERE fk.parent_object_id = t.[object_id]);

此逻辑的灵感来自于this site发布的一组相关查询。

答案 1 :(得分:0)

这是使用EXCEPT的另一个选项。

select name
from sys.tables
except
(
    select OBJECT_NAME(parent_object_id)
    from sys.foreign_keys
)
order by name