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

Bla*_*gle 37 sql-server-2005 foreign-key-relationship composite-primary-key

我有两张桌子

Table1(
  FileID,
  BundledFileID,
  Domain)
Run Code Online (Sandbox Code Playgroud)

和

Table2(
  FileID,
  FileType,
  FileName)
Run Code Online (Sandbox Code Playgroud)

在表2中FileID,它FileType是复合主键.我想创建一个从外键关系Table1.FileID 到Table2.

是否有可能做到这一点?

mar*_*c_s 74

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

ALTER TABLE dbo.Table1
  ADD CONSTRAINT FK_Table1_Table2
  FOREIGN KEY(FileID, FileType) REFERENCES Table2(FileID, FileType)
Run Code Online (Sandbox Code Playgroud)

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

  • @ Jus12:那是标准的SQL (2认同)
  • @BornToCode:如果他希望能够使用外键引用该复合主键,那么他**必须**将 `FileType` 列添加到 `Table1` 中,以便他可以创建 FK 关系。 (2认同)