From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: jacekp@poczta.wprost.pl
Cc: pgsql-sql@postgresql.org
Subject: Re: update vs unique index
Date: Mon, 25 Jul 2005 12:52:49 -0400
Message-ID: <20050725165249.GA29395@alvh.no-ip.org> (raw)
In-Reply-To: <1122296323.723165.27560@o13g2000cwo.googlegroups.com>
References: <1122296323.723165.27560@o13g2000cwo.googlegroups.com>
On Mon, Jul 25, 2005 at 05:58:43AM -0700, jacekp@poczta.wprost.pl wrote:
> I can imagine why it fails. Update operates on first row, making 2 out
> of 1 and that collides with second row (which has 2 as its value
> already). However, when you look at the update efect as a whole
> uniqueness is preserved, so index schould not veto update.
>
> My question is: is there a chance to bypass this behaviour? Something
> like controlling the order in which rows go into update. If update
> would start from last row, it would be successful for sure.
Yeah, this is a known limitation. Usual workaround is issue two
updates instead of one,
update foo set a = -a where <condition>;
update foo set a = -a + 1 where <condition>;
The point is to move all unique keys to an unused interval and then
move them back, changed all at a time.
It'll eventually be fixed, but don't hold your breath.
--
Alvaro Herrera (<alvherre[a]alvh.no-ip.org>)
"No hay ausente sin culpa ni presente sin disculpa" (Prov. francés)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: alvherre@alvh.no-ip.org, jacekp@poczta.wprost.pl
Subject: Re: update vs unique index
In-Reply-To: <20050725165249.GA29395@alvh.no-ip.org>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox