Dans PSQL, existe-t-il un bon moyen de trouver toutes les tables qui héritent d'une autre table? Idéalement, je pourrais obtenir les données d'une requête SQL, mais à ce stade, je serais satisfait de toute méthode fiable.Comment trouver des tables enfants qui héritent d'une autre table dans PSQL
17
A
Répondre
30
Que voulez-vous dire "de sql query"? Cela signifie-t-il que SELECT
ing de pg_inherits
ne vous satisfait pas?
SELECT pg_inherits.*, c.relname AS child, p.relname AS parent
FROM
pg_inherits JOIN pg_class AS c ON (inhrelid=c.oid)
JOIN pg_class as p ON (inhparent=p.oid);
2
Si vous avez également besoin les noms de schéma:
SELECT cn.nspname AS schema_child, c.relname AS child, pn.nspname AS schema_parent, p.relname AS parent
FROM pg_inherits
JOIN pg_class AS c ON (inhrelid=c.oid)
JOIN pg_class as p ON (inhparent=p.oid)
JOIN pg_namespace pn ON pn.oid = p.relnamespace
JOIN pg_namespace cn ON cn.oid = c.relnamespace
WHERE p.relname = 'your table name' and pn.nspname = 'your schema name'
1
Si vous voulez trouver tous les enfants de la partition de maître, vous pouvez simplement l'exécuter comme:
SELECT relname
FROM pg_class,pg_inherits
WHERE pg_class.oid=pg_inherits.inhrelid
AND inhparent
IN (SELECT oid FROM pg_class WHERE relname='your_master_partition')
ORDER BY relname;
Questions connexes
- 1. l'accès des enfants des tables enfants dans Rails
- 2. Comment trouver des lignes dans une table qui n'ont pas de ligne correspondante dans une autre table
- 3. Comment obtenir toutes les tables qui ont des FK dans une autre table?
- 4. Compter les enfants dans une autre table pour chaque ligne
- 5. comment trouver des relations entre les tables
- 6. Suppression d'enregistrements avec des tables enfants
- 7. MySQL comment supprimer des enregistrements dans une table qui sont dans une autre table
- 8. Trouver des entrées dans une table MySQL en fonction des conditions d'une autre table
- 9. trouver les tables a des données binaires
- 10. Comment compléter psql avec Windows?
- 11. Récupérer des champs d'une table qui a la même relation avec une autre table
- 12. trouver des connexions bidirectionnelles dans une table
- 13. Comment sélectionner les lignes d'une table qui ne correspondent pas à une autre table dans SQL?
- 14. Comment accéder à des modèles non-enfants à partir d'un autre contrôleur dans CakePHP?
- 15. Pourquoi cette requête renvoie-t-elle uniquement des résultats avec des tables enfants non vides?
- 16. Liste des tables de filtres dans MS-Access Link Table?
- 17. Suppression d'un enregistrement dans une table qui a des tables relationnelles clés étrangères
- 18. Comment supprimer tous les enregistrements d'une table ayant des enregistrements correspondants dans une autre table
- 19. Comment trouver des enregistrements qui ne sont pas joints?
- 20. Comment soustraire des tables sql?
- 21. Comment chaîner des tables liées dans Access?
- 22. Insérer une partie d'une table dans une autre table
- 23. Comment gérer une table immuable référençant des tables mutables?
- 24. Puis-je trouver des enfants logiques par type
- 25. Comment trouver des "trous" dans un tableau
- 26. Comment sélectionner des valeurs de deux tables qui ne sont pas contenues dans la table de carte?
- 27. Sélectionnez tous les éléments d'une table qui n'apparaissent pas dans une clé étrangère d'une autre table
- 28. comment trouver qui verrouille qui dans SQL Server 2005
- 29. Comment trouver un élément par nom de classe dans une autre cellule d'une ligne de table?
- 30. Comment joindre des tables multiples?
Quand j'ai écrit " sql query ", je voulais dire quelque chose que je pourrais passer à PSQL sur la ligne de commande, par opposition à quelque chose comme \ d qui doit être exécuté de manière interactive. Donc, la sélection de pg_inherits est un bon début. Où puis-je trouver un tableau répertoriant les noms des tables et leurs aides? – Watusimoto
Das est perfekt! Vielen dank! – Watusimoto
Watusimoto - \ d peut également être passé à psql sur la ligne de commande :) –