0
我在使用posgresql的項目中使用了繼承的表。如何在postgresql的繼承表上添加外鍵約束?
類似的東西:
create table root
(
id bigserial,
some_data text,
...
);
create table leaf_a
(
data2 text
) inherits(root);
create table leaf_b
(
maybe_other_data text
) inherits(root);
一切偉大的工程至今。
但我最近添加一個表,就是如果在leaf_a和leaf_b使用一個一對一的關係,所以我喜歡創建:
create table conf
(
id bigserial,
root_id bigint,
more_data text
);
到目前爲止好,但現在我想創建一個約束:
alter table conf
add constraint plop foreign key (root_id) references root (id);
Postgres讓我創建約束。
所以我加了一些數據:
insert into leaf_a (some_data, data2) values ('...', '...');
比方說,該ID生成(從根表的ID)是42,我現在希望將數據添加到表中的conf:
insert into conf (root_id, more_data) values (42, '...');
這裏是問題所在,postgres告訴我,表中沒有id = 42的數據。
好的,那麼我該如何解決這個問題?
在此先感謝。
你已閱讀文檔章節數據定義/繼承/注意事項?它在這種情況下提到了限制。 –
好的,我已經切換了conf,root和葉子之間的鏈接。現在我對每個葉表和根進行約束。 –
@iXô它適合你嗎?如果是的話,你可以添加這個答案並接受它嗎? –