[英]Double Foreign key in 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中產生這種行為的最佳方法是什么?
Create temp table AAA (
AAA_id int primary key
);
create temp table BBB (
AAA_id int not null references AAA (AAA_id),
BBB_name character varying(20) not null,
primary key (AAA_id, BBB_name)
);
create temp table CCC (
AAA_id int not null,
BBB_name character varying(20) not null,
DDD_id integer not null,
-- Guessing at the primary key.
primary key (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中的行,因此CCC中的外鍵{AAA_id,BBB_name}也將引用BBB中的一個唯一行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.