Я пытаюсь использовать двойной первичный ключ в качестве внешнего ключа.
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,
... ???
);
Таблица ААА является объектом
Таблица 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?