[GENERAL] UPDATE feature or bug? - Mailing list pgsql-sql

From Stuart Rison
Subject [GENERAL] UPDATE feature or bug?
Date
Msg-id Pine.LNX.4.10.9909221327290.23732-100000@bsmlx17
Whole thread Raw
Responses Re: [SQL] [GENERAL] UPDATE feature or bug?  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-sql
Dear all,

Consider the following table;

functions=> select * from prova order by a,b,c,d;
a|b|c|d
-+-+-+-
4|0|0|0
4|1|0|0
4|1|1|0
4|1|2|0
4|1|3|0
4|1|4|0
4|3|0|0
4|3|1|0
4|3|2|0
4|4|0|0
4|4|1|0
4|4|2|0
4|4|3|0
(13 rows)

with a unique index on (a,b,c,d)

and note that there is a gap in the continuity of b (from 4.1 to 4.3).

If I try

UPDATE prova SET b=b-1 WHERE b>2;

I get:

ERROR:  Cannot insert a duplicate key into a unique index

but if I try:

functions=> update prova set b=b-1 where b=3;
UPDATE 3
functions=> update prova set b=b-1 where b=4;
UPDATE 4

it works.

Now I've sussed this out as the update must be dealing with rows where b=4
first, trying to UPDATE them to b=3 and failing because these are already
'occupied'.

Is this a bug? is this a feature? is there a way of telling the UPDATE
what order to UPDATE in?

Regards,

Stuart.

Stuart C. G. Rison
Department of Biochemistry and Molecular Biology
6th floor, Darwin Building, University College London (UCL)
Gower Street, London, WC1E 6BT, United Kingdom
Tel. 0207 504 2303, Fax. 0207 380 7033
e-mail: rison@biochem.ucl.ac.uk



pgsql-sql by date:

Previous
From: José Soares
Date:
Subject: Re: [SQL] OID & indexes.
Next
From: Jeff MacDonald
Date:
Subject: Re: [SQL] decimal