PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Clés étrangères + héritage de table dans PostgreSQL ?

C'est couvert dans le manuel de l'utilisateur .

La version courte :vous pouvez utiliser des clés étrangères ou l'héritage de table, mais pas les deux. Ce n'est pas intrinsèquement impossible, c'est juste qu'il est techniquement assez difficile d'implémenter des index uniques qui couvrent les tables héritées dans PostgreSQL de manière rapide et fiable. Sans cela, vous ne pouvez pas avoir de clé étrangère utile. Personne ne l'a suffisamment implémenté avec succès pour qu'un correctif ajoutant la prise en charge soit encore accepté dans PostgreSQL.

Une clé étrangère peut pointer vers une table qui fait partie d'une hiérarchie d'héritage, mais elle ne trouvera que des lignes dans cette table exactement . Pas dans les tables parent ou enfant. Pour voir quelles lignes la clé étrangère voit, faites un SELECT * FROM ONLY thetable . Le ONLY mot-clé signifie "ignorer l'héritage" et c'est ce que fera la recherche de clé étrangère.