Re: Finding primary keys
От | Tom Lane |
---|---|
Тема | Re: Finding primary keys |
Дата | |
Msg-id | 26622.955409712@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Finding primary keys ("Matlack, Brad" <matlackb@ogden.disa.mil>) |
Список | pgsql-sql |
"Matlack, Brad" <matlackb@ogden.disa.mil> writes: > I'm trying to determine which fields in a table are primary keys, using a > select statement. This was just discussed in connection with the ODBC driver. The best solution I saw was select ta.attname, ia.attnum from pg_attribute ta, pg_attribute ia, pg_class c, pg_index i where c.relname = 'foo_pkey' AND c.oid = i.indexrelid AND ia.attrelid = i.indexrelid AND ta.attrelid = i.indrelid AND ta.attnum = i.indkey[ia.attnum-1] ORDER BY ia.attnum; where 'foo' is the table you are interested in. You could also do just select attname, attnum from pg_attribute a, pg_class c where c.relname = 'foo_pkey' AND attrelid = c.oid AND attnum > 0 ORDER BY attnum; but this'll not track renaming of columns via ALTER TABLE RENAME COLUMN, since what it's showing you is actually the names of the columns in the index relation, and ALTER doesn't bother to change those. regards, tom lane
В списке pgsql-sql по дате отправления: