Двойной внешний ключ в postgresql

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

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?

14
задан peterh says reinstate Monica 9 June 2019 в 05:05
поделиться