Подтвердить что ты не робот

Отношение внешних ключей с составными первичными ключами в SQL Server 2005

У меня есть две таблицы

Table1(
  FileID,
  BundledFileID,
  Domain)

и

Table2(
  FileID,
  FileType,
  FileName)

В таблице 2 FileID и FileType - составной первичный ключ. Я хочу создать отношение внешнего ключа от Table1.FileID до Table2.

Можно ли это сделать?

4b9b3361

Ответ 1

Так как Table2 имеет составной первичный ключ (FileID, FileType), то любая ссылка на него должна также содержать оба столбца.

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

Если у вас нет уникального ограничения/индекса в поле Table2.FileID (но если да: почему это не PK??), вы не можете создать отношение FK только к частям ПК в целевой таблице - просто не могу этого сделать.

Ответ 2

marc уже дал довольно хороший ответ. Если строки в таблице 1 относятся только к одному типу файла (например, FileType "ABC" ), вы можете добавить FileType в таблицу1 как вычисленный столбец:

ALTER TABLE Table1 ADD FileType as 'ABC'

который затем можно использовать в внешнем ключе.