Foreign keys + table inheritance in PostgreSQL?

后端 未结 3 943
囚心锁ツ
囚心锁ツ 2020-12-30 22:05

I have three tables: organization, organization_teams and org_users. Here organization_teams is inherited from orga

3条回答
  •  说谎
    说谎 (楼主)
    2020-12-30 22:36

    It's covered in the user manual.

    The short version: you can use foreign keys, or table inheritance, but not both. This isn't inherently impossible, it's just that it's technically quite difficult to implement unique indexes that span inherited tables in PostgreSQL in a fast, reliable manner. Without that, you can't have a useful foreign key. Nobody's successfully implemented it well enough for a patch adding support to be accepted into PostgreSQL yet.

    A foreign key can point to a table that is part of an inheritance hierarchy, but it'll only find rows in that table exactly. Not in any parent or child tables. To see which rows the foreign key sees, do a SELECT * FROM ONLY thetable. The ONLY keyword means "ignoring inheritance" and that's what the foreign key lookup will do.

提交回复
热议问题