W PSQL, czy istnieje dobry sposób na znalezienie wszystkich tabel, które dziedziczą z innej tabeli? Idealnie byłoby uzyskać dane z zapytania SQL, ale w tym momencie byłbym zadowolony z jakiejkolwiek niezawodnej metody.Jak znaleźć tabele potomne, które dziedziczą z innej tabeli w PSQL
17
A
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);
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;
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
Das jest perfekt! Vielen dank! – Watusimoto
Watusimoto - \ d można również przekazać do psql w linii poleceń :) –