Re: How to determine PRIMARY KEYS
От | Alex Pilosov |
---|---|
Тема | Re: How to determine PRIMARY KEYS |
Дата | |
Msg-id | Pine.BSO.4.10.10106111329540.16686-100000@spider.pilosoft.com обсуждение исходный текст |
Ответ на | How to determine PRIMARY KEYS (Sandro Dentella <sandro.dentella@tin.it>) |
Список | pgsql-interfaces |
On Mon, 11 Jun 2001, Sandro Dentella wrote: > I really think that this is more than needed, becouse if you have a table > w/ a primary key and unique index NOT NULL on an other attribute both these > attributes would be choosen not just the minimum needed (the primary key > OR an attribute NOT NULL w/ unique index). There's an attribute indisprimary in pg_index which you can use to find what's the primary key on the table. I think what you should do is this: a) if there's a primary key, use that. b) if there isn't, find a unique/notnull index. > 1. find all unique indexes on table ($tbl) > > SELECT i.indexrelid FROM pg_class c, pg_index i \ > WHERE c.relname = '$tbl' and c.oid = i.indrelid \ > and i.indisunique = 't' > > > 2. select in pg_attribute the attributes of these indexes... > > 3. loop over these attrs ($at) and select those that are NOT NULL. > > SELECT attname,attnotnull from pg_attribute \ > where attrelid = (SELECT oid from pg_class \ > where relname = '$tbl') and attname = '$at' \ > and attnotnull = 't' > > May I as an alternative just relay on the pattern *_pkey and look at the > attribute of relation *_pkey to get the PRIMARY KEY? > > Is there a document that explains system tables? > > > Thanks in advance > > sandro > *:-) > > > > PS. For those who whant to look at tksql or sdsql (the tcl/tk package): > http://pcco2.mi.infn.it/sd/soft. If you encounter problems installing or > running it I'd really appreciate to be informed (and/or if you like > it...;-) . Thanks > > Note: sorry if this message shows up 2 times. I had problems w/ config of > sendmail > > > > -- -- Alex Pilosov | http://www.acecape.com/dsl CTO - Acecape, Inc. | AceDSL:The best ADSL in Bell Atlantic area 325 W 38 St. Suite 1005 | (Stealth Marketing Works! :) New York, NY 10018 |
В списке pgsql-interfaces по дате отправления: