Skip to content

Instantly share code, notes, and snippets.

@thanoojgithub
Created October 4, 2025 22:32
Show Gist options
  • Select an option

  • Save thanoojgithub/72d17b6b1804fd9dbdfb465736b829ad to your computer and use it in GitHub Desktop.

Select an option

Save thanoojgithub/72d17b6b1804fd9dbdfb465736b829ad to your computer and use it in GitHub Desktop.
postgreSQL - to get list of parent and child relationship tables list
SELECT
n.nspname AS table_schema,
c.relname AS table_name,
COALESCE(parents.parent_tables, ARRAY[]::text[]) AS parent_tables,
COALESCE(children.child_tables, ARRAY[]::text[]) AS child_tables
FROM
pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
LEFT JOIN (
SELECT
conrelid,
ARRAY_AGG(DISTINCT confrelid::regclass::text) AS parent_tables
FROM pg_constraint
WHERE contype = 'f'
GROUP BY conrelid
) parents ON parents.conrelid = c.oid
LEFT JOIN (
SELECT
confrelid,
ARRAY_AGG(DISTINCT conrelid::regclass::text) AS child_tables
FROM pg_constraint
WHERE contype = 'f'
GROUP BY confrelid
) children ON children.confrelid = c.oid
WHERE
c.relkind = 'r' and n.nspname='mydb'
AND n.nspname NOT IN ('pg_catalog', 'information_schema')
ORDER BY
n.nspname, c.relname;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment