首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在SQL Server中找出哪些外键约束引用了表?

如何在SQL Server中找出哪些外键约束引用了表?
EN

Stack Overflow用户
提问于 2013-07-06 18:04:20
回答 16查看 345.3K关注 0票数 161

我正在尝试删除一个表,但收到以下消息:

消息3726,级别16,状态1,第3行

无法删除对象“”dbo.UserProfile“”,因为它被外键约束引用。“”

Msg 2714,Level 16,State 6,Line 2

数据库中已存在名为'UserProfile‘的对象。

我使用SQL Server Management Studio查看了一下,但找不到约束条件。如何找出外键约束?

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2013-07-06 18:08:00

这就是它:

代码语言:javascript
复制
SELECT 
   OBJECT_NAME(f.parent_object_id) TableName,
   COL_NAME(fc.parent_object_id,fc.parent_column_id) ColName
FROM 
   sys.foreign_keys AS f
INNER JOIN 
   sys.foreign_key_columns AS fc 
      ON f.OBJECT_ID = fc.constraint_object_id
INNER JOIN 
   sys.tables t 
      ON t.OBJECT_ID = fc.referenced_object_id
WHERE 
   OBJECT_NAME (f.referenced_object_id) = 'YourTableName'

这样,您将获得引用表和列名。

根据评论建议,编辑为使用sys.tables而不是通用sys.objects。谢谢,marc_s

票数 273
EN

Stack Overflow用户

发布于 2014-06-02 19:16:33

另一种方法是检查

代码语言:javascript
复制
sp_help 'TableName'

(或者只突出显示引用的TableName并按ALT+F1键)

随着时间的推移,我决定改进我的答案。下面是sp_help提供的结果的屏幕截图。A在此示例中使用了AdventureWorksDW2012 DB。那里有许多好的信息,我们正在寻找的是在最末端-以绿色突出显示:

票数 104
EN

Stack Overflow用户

发布于 2013-07-06 18:08:24

尝尝这个

代码语言:javascript
复制
SELECT
  object_name(parent_object_id) ParentTableName,
  object_name(referenced_object_id) RefTableName,
  name 
FROM sys.foreign_keys
WHERE parent_object_id = object_id('Tablename')
票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17501840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档