Sql-Server
查找數據庫中所有沒有外鍵的表
在 SQL Server 中,我們如何找到所有不包含以下任何一項的表:
- 外鍵約束
- 其他表的外鍵引用
SwapnilBhate 的答案將返回由外鍵引用的表。添加進一步
LEFT JOIN
將排除這些:SELECT tbl.name FROM sys.tables AS tbl LEFT JOIN sys.foreign_key_columns AS fKey ON tbl.object_id = fKey.parent_object_id LEFT JOIN sys.foreign_key_columns AS rKey ON tbl.object_id = rKey.referenced_object_id WHERE fKey.parent_object_id IS NULL AND rKey.referenced_object_id IS NULL;
您可以使用該
sp_fkeys
過程來獲取邏輯外鍵資訊。但限制是您必須通過將表名作為輸入參數來執行。更多資訊可以在下面的 MSDN 庫中找到。或者,您可以使用以下查詢從 sys.tables 中獲取所有表,並檢查 sys.foreign_key_columns 中是否存在相同的表 object_id。
SELECT tbl.name FROM sys.tables AS tbl LEFT JOIN sys.foreign_key_columns AS fKey ON tbl.object_id = fKey.parent_object_id WHERE fKey.parent_object_id IS NULL