postgreSQL外部キー参照クエリー


テーブル名に基づいて、すべての外部キーが参照するテーブルと、外部キーのカラム名をクエリーします.
key_column_USage(システム列情報テーブル)、
pg_constraint(システムのすべての制約テーブル)

SELECT  x.table_name,
	    x.column_name
  FROM  information_schema.key_column_usage x
  INNER JOIN  (SELECT  t.relname, 
                       a.conname 
                 FROM  pg_constraint a 
                 INNER JOIN pg_class ft
                         ON ft.oid = a.confrelid 
                 INNER JOIN pg_class t 
                         ON t.oid = a.conrelid
                WHERE  a.contype = 'f' 
                  AND  a.confrelid =
                       (select e.oid 
                          from pg_class e
                         where e.relname = 'xxx_table')
                ) tp 
          ON (x.table_name = tp.relname AND
              x.constraint_name = tp.conname)