Psql fait cela, et si vous démarrez psql avec :
psql -E
il vous montrera exactement quelle requête est exécutée. Dans le cas de la recherche de clés étrangères, c'est :
SELECT conname,
pg_catalog.pg_get_constraintdef(r.oid, true) as condef
FROM pg_catalog.pg_constraint r
WHERE r.conrelid = '16485' AND r.contype = 'f' ORDER BY 1
Dans ce cas, 16485 est l'oid de la table que je regarde - vous pouvez l'obtenir en convertissant votre nom de table en regclass comme suit :
WHERE r.conrelid = 'mytable'::regclass
Qualifiez le nom de la table en fonction du schéma s'il n'est pas unique (ou s'il n'est pas le premier de la liste de votre search_path
) :
WHERE r.conrelid = 'myschema.mytable'::regclass
0 votes
Je suggère d'utiliser Réponse de @Magnus . Le plus simple, le plus propre, le plus rapide.
0 votes
@ErwinBrandstetter Cependant, la réponse acceptée donne directement les noms des colonnes et des tables, nous n'avons donc pas besoin de les analyser. Ce serait bien si la réponse de Magnus pouvait le faire aussi.