PSQL

2009-09-22 17 views
17

Başka bir tablodan devralan alt tabloları nasıl bulur PSQL'de, başka bir tablodan miras alınan tüm tabloları bulmanın iyi bir yolu var mı? İdeal olarak, verileri bir SQL sorgusundan alabilirim, ancak bu noktada güvenilir bir yöntemden memnun olurum.PSQL

cevap

30

"sql sorgusundan" ne demek istiyorsunuz? pg_inherits dan SELECT ing, sizin için yeterince iyi değil mi? Ayrıca şema adları gerekiyorsa

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

ben yazdığımda " sql sorgusu, komut satırında PSQL'e geçebileceğim bir şeydi, etkileşimli olarak çalıştırılması gereken bir şeyden farklı olarak. Bu yüzden pg_inherits'ten seçim yapmak iyi bir başlangıç. Tablo listeleme tablo adlarını ve bunların ürünlerini nerede bulabilirim? – Watusimoto

+0

Das is perfekt! Vielen Dank! – Watusimoto

+2

Watusimoto - \ d komut satırında psql'ye de geçirilebilir :) –

2

: Tüm çocuğun ana bölümünden bulmak istiyorsanız

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

sadece hoşuna yürütebilirsiniz:

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; 
İlgili konular