È trattato nel manuale utente .
La versione breve:puoi usare chiavi esterne o ereditarietà delle tabelle, ma non entrambe. Questo non è intrinsecamente impossibile, è solo che è tecnicamente abbastanza difficile implementare indici univoci che si estendono su tabelle ereditate in PostgreSQL in modo rapido e affidabile. Senza quello, non puoi avere una chiave esterna utile. Nessuno l'ha ancora implementato abbastanza bene perché una patch che aggiunge supporto sia ancora accettata in PostgreSQL.
Una chiave esterna può puntare a una tabella che fa parte di una gerarchia di ereditarietà, ma troverà solo le righe in quella tabella esattamente . Non in nessuna tabella padre o figlio. Per vedere quali righe vede la chiave esterna, esegui un SELECT * FROM ONLY thetable
. Il ONLY
parola chiave significa "ignorare l'ereditarietà" ed è ciò che farà la ricerca della chiave esterna.