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 по дате отправления:

Предыдущее
От: Hiroshi Inoue
Дата:
Сообщение: Re: ODBC problem
Следующее
От: Hans-Jürgen Schönig
Дата:
Сообщение: Python problem with COPY