Re: alter table ad primary key - Mailing list pgsql-general

From Alvaro Herrera
Subject Re: alter table ad primary key
Date
Msg-id 20020823133842.542990ba.alvherre@atentus.com
Whole thread Raw
In response to Re: alter table ad primary key  (Dmitry Tkach <dmitry@openratings.com>)
List pgsql-general
En Fri, 23 Aug 2002 13:20:05 -0400
Dmitry Tkach <dmitry@openratings.com> escribió:

>
> Christoph Dalitz wrote:
> > Hello,
> >
> > trying "alter table buecher add primary key (isbn);"
> > gives the error "ALTER TABLE / ADD CONSTRAINT is not implemented"
> > with PG 7.1.
> >
> > Does anybody know whether this works with a newer PG version?

Yes, it's supported since 7.2 I think.

> You don't really need all this...
>
> just:
>
> create unique index buecher_isbn_pkey on buecher(isbn);
> update pg_attribute set attnotnull='t' from pg_class where attrelid=oid and relname='buecher' and attname='isbn';
>
> This will have exactly the same effect as making it a primary key. The *only* difference is that \d will not say it's
aprimary 
> key... Functionally, it is completely the same thing though...

Another side effect of this method is that when creating foreign key
references you will have to declare the column explicitly.

I think to get it completely you also have to set the indisprimary bit
on the pg_index tuple of the index...  Not that I'm suggesting messing
with system catalog though: it's unportable and a little mistake can
render your database useless.  Better to upgrade....


--
Alvaro Herrera (<alvherre[a]atentus.com>)
"Pensar que el espectro que vemos es ilusorio no lo despoja de espanto,
sólo le suma el nuevo terror de la locura" (Perelandra, CSLewis)

pgsql-general by date:

Previous
From: Dmitry Tkach
Date:
Subject: Re: alter table ad primary key
Next
From: Dmitry Tkach
Date:
Subject: Re: alter table ad primary key