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_number上为abstract_addresses创建外键。 – GriffeyDog
@GriffeyDog,在插入到phone_numbers后,abstract_addresses在其address_id中的值为1。 –