How to determine PRIMARY KEYS

Поиск
Список
Период
Сортировка
От Sandro Dentella
Тема How to determine PRIMARY KEYS
Дата
Msg-id 20010611184617.A6328@bluff.diade.it
обсуждение исходный текст
Ответы Re: How to determine PRIMARY KEYS  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: How to determine PRIMARY KEYS  (Alex Pilosov <alex@acecape.com>)
Список pgsql-interfaces
Hi all,
 I'm the author of sdsq/tksql an interface to postgreSQL I released under GPL some weeks ago.
 Tksql tries as much as possible to use PRIMARY KEYS instead of oids in any operation so that logs are much more
readableand so that I can use those logs to do a replica of the database to keep two databases in sync (in a very
simplesituation thought...)
 
 Now, I'd like suggestion and a comment on the algorithm I'm using to find the primary key. 
 I really think that this is more than needed, becouse if you have a table w/ a primary key and unique index NOT NULL
onan other attribute both these attributes would be choosen not just the minimum needed (the primary key OR an
attributeNOT NULL w/ unique index).
 
 Here is what I do:
 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    \
andi.indisunique = 't'
 

 2. select in pg_attribute the attributes of these indexes...     3. loop over these attrs ($at) and select those that
areNOT 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
encounterproblems 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 



-- 
Sandro Dentella  *:-)
e-mail: sandro@ermit.it sandro.dentella@mi.infn.it 



В списке pgsql-interfaces по дате отправления:

Предыдущее
От: Kemin Zhou
Дата:
Сообщение: difficulty building the C++ interface
Следующее
От: Tom Lane
Дата:
Сообщение: Re: How to determine PRIMARY KEYS