web-dev-qa-db-ja.com

SQL Server 2005の複合主キーとの外部キーの関係

私は2つのテーブルを持っています

Table1(
  FileID,
  BundledFileID,
  Domain)

そして

Table2(
  FileID,
  FileType,
  FileName)

表2では、FileIDFileTypeは複合主キーです。 Table1.FileIDからTable2への外部キー関係を作成したい。

これを行うことは可能ですか?

35
Black Eagle

Table2には複合主キー(FileID, FileType)があるため、その参照にはboth columnsも含める必要があります。

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

Table2.FileIDフィールドに一意の制約/インデックスがない場合(ただし、そうであれば、なぜこれがPKではないのですか?)、ターゲットテーブル上のPKの一部のみにFK関係を作成できません。できません。

72
marc_s

marcはすでにかなり良い答えを出しています。 Table1の行が1種類のファイル(FileType 'ABC'など)にのみ関連している場合、計算列としてFileTypeをTable1に追加できます。

ALTER TABLE Table1 ADD FileType as 'ABC'

これは、外部キーで使用できます。