我的表有一个外键 - 我想找到外键指向的表(SQL server)

时间:2017-06-26 15:45:06

标签: sql-server tsql

我觉得这是一件非常容易找到的事情,当我查看时,我似乎找不到我正在寻找的东西,所以我不知道我是不是只是谷歌搜索时不要问它。我桌子上的一个栏目的名字以FK开头,显然它是另一张桌子的外键。我如何找到这张表?

2 个答案:

答案 0 :(得分:0)

尝试以下操作 - 它所做的就是列出数据库中的所有FK关系(以及更多)。找到您想要的桌子并从那里开始。

SELECT
FK_Table = FK.TABLE_NAME,
FK_Column = CU.COLUMN_NAME,
PK_Table = PK.TABLE_NAME,
PK_Column = PT.COLUMN_NAME,
Constraint_Name = C.CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK
ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK
ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU
ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
INNER JOIN (
        SELECT
            i1.TABLE_NAME,
            i2.COLUMN_NAME
        FROM
            INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
        INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2
            ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
        WHERE
            i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
       ) PT
ON PT.TABLE_NAME = PK.TABLE_NAME

答案 1 :(得分:0)

标识外键表的一种方法是编写外键脚本并查看REFERENCES行。这是一个例子:

USE [TirePricing]
GO
ALTER TABLE [dbo].[tblTireLines]  WITH CHECK ADD  CONSTRAINT [FK_tblTireLines_tblManufacturerBrands] FOREIGN KEY([ManufacturerBrandID])
REFERENCES [dbo].[tblManufacturerBrands] ([ManufacturerBrandID])
GO
ALTER TABLE [dbo].[tblTireLines] CHECK CONSTRAINT [FK_tblTireLines_tblManufacturerBrands]
GO

编写密钥脚本;在SQL Server Management Studio对象资源管理器树中找到您的表。展开它然后你的密钥文件夹找到有问题的密钥。然后,右键单击该键并使用上下文菜单中的Script Key As ...命令。

REFERENCES部分将标识外键的表和列。