2012-02-07 13 views

答えて

2

私が正しく理解している場合、テーブル間の継承の一部である列の名前を知りたいとします。

SELECT nmsp_parent.nspname AS parent_schema, 
     parent.relname   AS parent_table, 
     nmsp_child.nspname  AS child_schema, 
     child.relname   AS child_table,   
     column_parent.attname AS column_parent_name 
FROM pg_inherits 
JOIN pg_class parent   ON pg_inherits.inhparent = parent.oid 
JOIN pg_class child    ON pg_inherits.inhrelid = child.oid 
JOIN pg_namespace nmsp_parent ON nmsp_parent.oid  = parent.relnamespace 
JOIN pg_namespace nmsp_child ON nmsp_child.oid   = child.relnamespace 
JOIN pg_attribute column_parent ON column_parent.attrelid = parent.oid 
WHERE column_parent.attnum > 0 
AND column_parent.attname NOT ILIKE '%pg.dropped%'; 

このクエリは、階層の一部である列名を表示します。あなたが奉仕して欲しいです。

関連する問題