2009-09-22 6 views

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); 
+0

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

+0

Das est perfekt! Vielen dank! – Watusimoto

+2

Watusimoto - \ d peut également être passé à psql sur la ligne de commande :) –

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