【发布时间】:2013-11-26 21:09:56
【问题描述】:
create table abstract_addresses (
address_id int primary key
);
create table phone_numbers (
phone_number text not null unique
) inherits (abstract_addresses) ;
create table contacts (
name text primary key,
address_id int not null references abstract_addresses(address_id)
);
insert into phone_numbers values (1, '18005551212'); --works
select * from abstract_addresses;
address_id
1
select * from phone_numbers;
address_id phone_number
1 18005551212
insert into contacts values ('Neil', 1); --error
我收到此错误消息:
ERROR: insert or update on table "contacts" violates foreign key constraint "contacts_address_id_fkey"
SQL state: 23503
Detail: Key (address_id)=(1) is not present in table "abstract_addresses".
postgresql 表继承只是一个糟糕的用例?
【问题讨论】:
-
电话号码插入有效,因为您没有在 phone_numbers 上为 abstract_addresses 创建外键。
-
@GriffeyDog,插入 phone_numbers 后, abstract_addresses 在其 address_id 中的值为 1。