Re: Is this possible?

From: "A(dot) Kretschmer" <andreas(dot)kretschmer(at)schollglas(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: Is this possible?
Date: 2009-02-17 06:32:26
Message-ID: 20090217063226.GA22129@a-kretschmer.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Scott Marlowe 2009-02-17 08:10:38 Re: Is this possible?
Previous Message johnf 2009-02-17 02:36:54 Is this possible?