Отношение внешних ключей с составными первичными ключами в SQL Server 2005
У меня есть две таблицы
Table1(
FileID,
BundledFileID,
Domain)
и
Table2(
FileID,
FileType,
FileName)
В таблице 2 FileID
и FileType
- составной первичный ключ. Я хочу создать отношение внешнего ключа от Table1.FileID
до Table2
.
Можно ли это сделать?
Ответы
Ответ 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'
который затем можно использовать в внешнем ключе.