Re: unique constraint when updating tables - Mailing list pgsql-general

From A. Kretschmer
Subject Re: unique constraint when updating tables
Date
Msg-id 20060822185615.GA29859@localhost.localdomain
Whole thread Raw
In response to unique constraint when updating tables  ("gao iqiang" <iqianggao@gmail.com>)
List pgsql-general
am  Tue, dem 22.08.2006, um  8:39:00 +0800 mailte gao iqiang folgendes:
> Hello,
>     I met the following problem when i am using PostgreSQL as a backend
> database:
>     I have a table "tabrel(a int primary key, b int)", and now there are for
> example 100 records with column 'a' be from 1 to 100. When i'm going to add one

Why do you want to do this?


> to each 'a' and intended to get 'a' varing from 2 to 101, i use SQL query as
> "update tabrel set a=a+1" , but i got " ERROR: duplicate key violates unique
> constraint tabrel_a_key".

You can do something like this:

test=# create table foo (id int primary key);
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "foo_pkey" for table "foo"
CREATE TABLE
test=# insert into foo values(1);
INSERT 0 1
test=# insert into foo values(2);
INSERT 0 1
test=# insert into foo values(3);
INSERT 0 1
test=# update foo set id = id+1;
ERROR:  duplicate key violates unique constraint "foo_pkey"
test=# begin;
BEGIN
test=# update foo set id = id+100;
UPDATE 3
test=# update foo set id = id-99;
UPDATE 3
test=# commit;
COMMIT
test=# select * from foo;
 id
----
  2
  3
  4
(3 rows)



Other solution:

test=# begin;
BEGIN
test=# alter table foo drop constraint foo_pkey;
ALTER TABLE
test=# update foo set id = id+1;
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=# commit;
COMMIT


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

pgsql-general by date:

Previous
From: "Daniel Serodio"
Date:
Subject: varchar(n) vs. varchar
Next
From: "Chris Hoover"
Date:
Subject: Re: [8.1.4] Create index on timestamp fails