2009-09-22 8 views

Odpowiedz

30

Co masz na myśli "z zapytania sql"? Czy to oznacza, że ​​SELECT ing z pg_inherits nie jest wystarczająco dobry dla ciebie?

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

Kiedy pisałem " kwerendy sql ", miałem na myśli coś, co mogłem przekazać do PSQL z linii poleceń, w przeciwieństwie do czegoś takiego jak \ d, które musi być uruchamiane interaktywnie. Dobrym wyborem jest więc wybór z pg_inherits. Gdzie mogę znaleźć tabelę zawierającą nazwy tabel i ich identyfikatory? – Watusimoto

+0

Das jest perfekt! Vielen dank! – Watusimoto

+2

Watusimoto - \ d można również przekazać do psql w linii poleceń :) –

2

Jeśli trzeba także nazwy schematu:

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

Jeśli chcesz znaleźć wszystko dziecka z partycji nadrzędnej można po prostu wykonać to lubią:

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; 
Powiązane problemy