Я пытаюсь использовать двойной первичный ключ в качестве внешнего ключа.
Create table AAA (
AAA_id int primary key
);
create table BBB (
AAA_id int,
BBB_name character varying(20),
primary key (AAA_id, BBB_name)
);
create table CCC (
AAA_id,
BBB_name,
DDD_id,
... ???
);
таблица AAA является объектом
) таблица BBB - много к одному с AAA, и содержит псевдонимы AAA
Я пытаюсь создать сводную таблицу CCC, которая содержит многие к одному между DDD и BBB.
Думаю, мне нужно что-то вроде
create table CCC (
AAA_id,
BBB_name,
DDD_id,
foreign key (AAA_id, BBB_name) references BBB(AAA_id, BBB_name) on update cascade
);
где и AAA_id, и BBB_name являются внешними ключами, но они также всегда относятся к одной и той же строке в BBB.
но, конечно, это неверно. Как лучше всего добиться такого поведения в postgreSQL?