From: | Kris Jurka <books(at)ejurka(dot)com> |
---|---|
To: | Christopher Kings-Lynne <chriskl(at)familyhealth(dot)com(dot)au> |
Cc: | Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Quick question |
Date: | 2003-10-03 10:22:56 |
Message-ID: | Pine.LNX.4.33.0310030606560.15533-100000@leary.csoft.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Fri, 3 Oct 2003, Christopher Kings-Lynne wrote:
> Hi guys,
>
> If someone could help me with this, it would be cool. How do I query
> the catalogs to find the underlying index for a constraint? (Assuming
> the constraint is primary or unique)
>
For a primary key you can do:
SELECT cls.relname AS index_name
FROM pg_class cls, pg_constraint con, pg_index i
WHERE cls.oid = i.indexrelid AND con.conrelid = i.indrelid AND
i.indisprimary AND con.conname='<constraint name>';
This is not possible for a unique constraint because you can have multiple
unique constraints per table. So you are left trying to match
pg_constraint.conkey to pg_index.indkey (for which no default operator
exists), but even this can fail if you have the unlikely situation of two
unique indexes covering the same columns.
Kris Jurka
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Meskes | 2003-10-03 10:59:19 | Re: ecpg doesn't compile (datetime.h/dtime_t) |
Previous Message | Hannu Krosing | 2003-10-03 06:34:30 | Re: Index/Function organized table layout |