SQL Server 2005中与复合主键的外键关系

时间:2010-10-22 12:31:52

标签: sql-server-2005 foreign-key-relationship composite-primary-key

我有两张桌子

Table1(
  FileID,
  BundledFileID,
  Domain)

Table2(
  FileID,
  FileType,
  FileName)

在表2中,FileIDFileType是复合主键。我想创建从Table1.FileIDTable2的外键关系。

是否可以这样做?

2 个答案:

答案 0 :(得分:70)

由于Table2具有复合主键(FileID, FileType),因此对它的任何引用都必须包含两列

ALTER TABLE dbo.Table1
  ADD CONSTRAINT FK_Table1_Table2
  FOREIGN KEY(FileID, FileType) REFERENCES Table2(FileID, FileType)

除非你在Table2.FileID字段上有一个唯一的约束/索引(但如果是这样的话:为什么这不是PK?),你不能只在目标上的PK部分创建FK关系表 - 就是做不到。

答案 1 :(得分:4)

马克已经给出了一个很好的答案。如果Table1中的行只涉及一种类型的文件(例如FileType'ABC'),那么您可以将FileType作为计算列添加到Table1:

ALTER TABLE Table1 ADD FileType as 'ABC'

然后您可以在外键中使用。