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


---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Reply via email to