У меня есть следующие 3 таблицы:
TBLA
ID - PK
name
TBLB
ID - PK
tblAID - FK references tblA.ID
pkID2
tblC
ID - PK
tblAID *
fkID2 *
...
Я хочу сделать этот кортеж FK из (tblB.tblAID, tblB.pkID2)
Если я сделаю это:
alter table tblC with check
add constraint FK_tblC_tblB
foreign key (tblAID, fkID2)
references tblB (tblAID, pkID2)
Я получаю сообщение об ошибке:
В ссылочной таблице tblB нет первичных ключей или ключей-кандидатов.
которые соответствуют списку ссылающихся столбцов во внешнем ключе
'FK_tblC_tblB'
Т.е.: я хочу убедиться, что пара кортежей, вставленная в tblC
, существует в tblB
. Но я не могу этого сделать, поскольку pkID2
не является ключом. Действительно tblB
может иметь tblAID, pkID2
в качестве составного первичного ключа. Но тогда tblAID
все равно должен быть FK tblA.ID
.