Re: Is this possible? - Mailing list pgsql-sql

From A. Kretschmer
Subject Re: Is this possible?
Date
Msg-id 20090217063226.GA22129@a-kretschmer.de
Whole thread Raw
In response to Is this possible?  (johnf <jfabiani@yolo.com>)
Responses Re: Is this possible?
List pgsql-sql
In response to johnf :
> Hi,
> I'm not to sure this is possible.  
> 
> I need to replace a primary key (pkid) with the value of a different field.
> I have 
> pkid = 200
> attendid = 301
> 
> I need the pkid = 301
> 
> But there may or may not be a pkid that already exist that has the value of 
> 301.  The attendid is unique and the pkid data type is serial (has a 
> sequence).
> 
> Thanks for the help.

You can do that within a transaction and dropping the pk-constraint:

test=*# \d foo                        Table "public.foo"Column |  Type   |                    Modifiers
--------+---------+--------------------------------------------------id     | integer | not null default
nextval('foo_id_seq'::regclass)i     | integer |
 
Indexes:   "foo_pkey" PRIMARY KEY, btree (id)   "foo_i_key" UNIQUE, btree (i)

test=*# select * from foo;id | i
----+--- 1 | 2 2 | 1 3 | 3
(3 rows)

test=*# alter table foo drop constraint foo_pkey;
ALTER TABLE
test=*# update foo set id=i;
UPDATE 3
test=*# alter table foo add primary key(id);
NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index "foo_pkey" for table "foo"
ALTER TABLE
test=*# \d foo                        Table "public.foo"Column |  Type   |                    Modifiers
--------+---------+--------------------------------------------------id     | integer | not null default
nextval('foo_id_seq'::regclass)i     | integer |
 
Indexes:   "foo_pkey" PRIMARY KEY, btree (id)   "foo_i_key" UNIQUE, btree (i)

test=*# select * from foo;id | i
----+--- 2 | 2 1 | 1 3 | 3
(3 rows)


HTH, Andreas
-- 
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net


pgsql-sql by date:

Previous
From: johnf
Date:
Subject: Is this possible?
Next
From: Scott Marlowe
Date:
Subject: Re: Is this possible?