PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Fremdschlüssel + Tabellenvererbung in PostgreSQL?

Es wird im Benutzerhandbuch behandelt .

Die Kurzversion:Sie können Fremdschlüssel oder Tabellenvererbung verwenden, aber nicht beides. Dies ist nicht von Natur aus unmöglich, es ist nur technisch ziemlich schwierig, eindeutige Indizes zu implementieren, die geerbte Tabellen in PostgreSQL auf schnelle und zuverlässige Weise umfassen. Ohne das können Sie keinen nützlichen Fremdschlüssel haben. Niemand hat es erfolgreich genug implementiert, um einen Patch hinzuzufügen, der Unterstützung für PostgreSQL bietet.

Ein Fremdschlüssel kann auf eine Tabelle verweisen, die Teil einer Vererbungshierarchie ist, aber er findet nur Zeilen in dieser Tabelle exakt . Nicht in übergeordneten oder untergeordneten Tabellen. Um zu sehen, welche Zeilen der Fremdschlüssel sieht, führen Sie einen SELECT * FROM ONLY thetable aus . Der ONLY Schlüsselwort bedeutet "Ignorieren der Vererbung" und genau das macht die Fremdschlüsselsuche.