PostgreSQL中的外键+表继承?

Sup*_*are 18 postgresql inheritance

我有三个表:organization,organization_teamsorg_users.这organization_teams是继承自organization.因此,假设如果在organizations_teams其中添加记录将使organization表格id成为id列中的值organization_teams.

org_usersid列上有外键organization.现在,当我尝试在其中插入数据时org_users,给出了如下错误

insert or update on table "org_users" violates foreign key constraint "org_users_organizations"
DETAIL:  Key (org_id)=(12) is not present in table "organizations"
Run Code Online (Sandbox Code Playgroud)

为什么?

Cra*_*ger 28

包含在用户手册中.

简短版本:您可以使用外键或表继承,但不能同时使用两者.这本身并不是不可能的,只是技术上很难以快速,可靠的方式实现跨PostgreSQL中的继承表的唯一索引.没有它,你就没有有用的外键.没有人能够成功实现它,因为补丁添加支持已经被PostgreSQL接受了.

外键可以指向作为继承层次结构的一部分的表,但它只能准确地找到该表中的行.不在任何父表或子表中.要查看外键看到哪些行,请执行SELECT * FROM ONLY thetable.该ONLY关键字的意思是"忽略继承",这就是外键查找就可以了.