Foreign Keys einer Tabelle herausfinden

From: Philipp Lawitschka <office(at)lawitschka(dot)eu>
To: postgres-liste <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Foreign Keys einer Tabelle herausfinden
Date: 2009-09-07 17:21:11
Message-ID: 4AA54107.1060406@lawitschka.eu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Hallo Liste,

meine Anwendung muß zur Laufzeit ein Datenbankschema analysieren (eine
Art DBIx::Class). Ich hab im Prinzip alles herausgefunden, nur komm ich
irgendwie nicht an die Fremdschlüssel einer Tabelle ran. Hiermit bekomm
ich viel zu viele Datensätze und weiß nicht mehr, nach was ich noch
filtern soll:

SELECT c.conname, c.contype, c.conrelid, c.conkey, c.confkey,
a.attname, a.attnum, a.atttypid, x.relname AS MyTable, z.relname AS
ForeignTable, t.typname
FROM pg_constraint c
INNER JOIN pg_class x ON c.conrelid = x.oid
INNER JOIN pg_class z ON c.confrelid = z.oid
INNER JOIN pg_attribute a ON c.conkey[1] = a.attnum
INNER JOIN pg_type t ON a.atttypid = t.oid
WHERE c.contype = 'f'::char AND t.typname='int4';

Ich bin kein Profi in den Systemkatalogen. Weiß hier jemand, wie man das
am besten angehen könnte?

Viele Grüße
Philipp Lawitschka

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Philipp Lawitschka 2009-09-07 21:22:19 Re: Foreign Keys einer Tabelle herausfinden
Previous Message Andreas 'ads' Scherbaum 2009-09-01 08:19:46 == Wöchentlicher PostgreSQL Newsletter - 30. August 2009 ==