From: | Klint Gore <kg(at)kgb(dot)une(dot)edu(dot)au> |
---|---|
To: | Orion Henry <lab(at)orangekids(dot)org> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: primary keys |
Date: | 2006-04-20 03:38:06 |
Message-ID: | 4447021E23B.9BA8KG@129.180.47.120 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Wed, 19 Apr 2006 19:39:45 -0700, Orion Henry <lab(at)orangekids(dot)org> wrote:
> I'm trying to craft a query that will determine what column(s) are the
> primary key for a given table. I have succeeded but the query is so
> ugly that it borders on silly and cannot work for an arbitrary number of
> tables since indkey is an int2vect and the ANY keyword does not work on
> it.
>
> Please tell me there's an easier way to do this. Here is the query for
> tablename $table.
>
> SELECT attname
> FROM pg_index
> JOIN pg_class ON (indrelid = pg_class.oid)
> JOIN pg_attribute ON (attrelid = pg_class.oid)
> WHERE indisprimary IS TRUE
> AND (attnum = indkey[0] OR attnum = indkey[1] OR attnum = indkey[2])
> AND relname = '$table';
>
> Orion
works for me on version 8.1.3
SELECT attname
FROM pg_index
JOIN pg_class ON (indrelid = pg_class.oid)
JOIN pg_attribute ON (attrelid = pg_class.oid)
WHERE indisprimary IS TRUE
AND attnum = any(indkey)
AND relname = $tablename;
or on v7 you could try
select pcl.relname,
(select array_accum(attname) from pg_attribute where attrelid = pco.conrelid and attnum = any(pco.conkey)) as cols
>from pg_constraint pco
join pg_class pcl on pcl.oid = pco.conrelid
where pcl.relname = $tablename
and pco.contype = 'p'
klint.
+---------------------------------------+-----------------+
: Klint Gore : "Non rhyming :
: EMail : kg(at)kgb(dot)une(dot)edu(dot)au : slang - the :
: Snail : A.B.R.I. : possibilities :
: Mail University of New England : are useless" :
: Armidale NSW 2351 Australia : L.J.J. :
: Fax : +61 2 6772 5376 : :
+---------------------------------------+-----------------+
From | Date | Subject | |
---|---|---|---|
Next Message | Shoaib Mir | 2006-04-20 03:43:00 | problem while adding a column |
Previous Message | Tom Lane | 2006-04-20 03:18:48 | Re: locating a primary key |