posgresql を使用するプロジェクトで継承されたテーブルを使用しています。
そんな感じ :
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 で使用される場合に 1 対 1 の関係であるテーブルを追加したので、そのように作成しました。
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 のデータがないことを教えてくれます。
わかりました、この問題を回避するにはどうすればよいですか?
前もって感謝します。