我觉得这是一件非常容易找到的事情,当我查看时,我似乎找不到我正在寻找的东西,所以我不知道我是不是只是谷歌搜索时不要问它。我桌子上的一个栏目的名字以FK开头,显然它是另一张桌子的外键。我如何找到这张表?
答案 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部分将标识外键的表和列。