如何发现哪个表\字段链接表的外键?

时间:2014-03-05 11:29:01

标签: sql sql-server rdbms database

我是微软 SQL服务器的新手,我对数据库的了解并不多。

我有以下疑问:

在我的数据库中,我有一个名为 CPE

的表格

此表格有一个名为 SourceId 的字段(列),即我表格的 FOREIGN KEY

所以我认为这个字段必须包含在另一个表的某个字段中定义的值,因为它将2个表绑定在一起。)

我该怎么做才能发现另一个字段是什么,另一个字段链接到哪个?

TNX

安德烈

3 个答案:

答案 0 :(得分:1)

你当然在寻找:

sp_help [table_name]

或尝试此查询:

select t.name as ForeignKeytable, fk.constraint_column_id as ForeignKey_No, c.name as ForeignKeyColumn 
from sys.foreign_key_columns as fk
inner join sys.tables as t on fk.parent_object_id = t.object_id
inner join sys.columns as c on fk.parent_object_id = c.object_id and fk.parent_column_id = c.column_id
where fk.referenced_object_id = (select object_id from sys.tables where name = 'name')
order by ForeignKeytable, ForeignKey_No

答案 1 :(得分:0)

试试这个

方法1:

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')

或者:

方法2:

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) = 'Tablename'

答案 2 :(得分:0)

对象资源管理器中,右键单击将位于关系的外键一侧的表,然后单击设计。 该表在表设计器中打开。

表设计器菜单中,点击关系

关系出现在选定关系列表中,系统提供的名称格式为FK__,其中tablename是外键表的名称。

单击所选关系列表中的关系。

点击右侧网格中的表格列规范,然后点击属性右侧的省略号(...)。

现在,您将能够看到该表与其他表的关系。