Skip site navigation (1) Skip section navigation (2)

Re: unique & update

From: Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>
To: Ben-Nes Michael <miki(at)canaan(dot)co(dot)il>
Cc: <pgsql-general(at)postgresql(dot)org>
Subject: Re: unique & update
Date: 2002-01-29 17:13:57
Message-ID: 20020129090840.U92436-100000@megazone23.bigpanda.com (view raw or flat)
Thread:
Lists: pgsql-general
On Tue, 29 Jan 2002, Ben-Nes Michael wrote:

> Im into SQL trees trying to work with CELKO way to do it:
> http://www.intelligententerprise.com/001020/celko.shtml
>
> The problem is that if I try to add a new descendent which is not the most
> right sibling I get UNIQUE error.
>
> This occur ( if im right ) when the update try to update the lft column
> which is UNIQUE
>
> Example of table:
>
> CREATE TABLE areas (
> lft INT UNIQUE
> );
>
> I inserted 3 rows with value: 1, 2, 3
>
> now im trying to update:
> update areas set lft = lft +1;
>
> Then I get the UNIQUE problem.
>
> Is there a way to do UNIQUE check after the whole table got updated ?
> If not, any ideas to walk around the problem ?

Unfortunately no, we don't support deferred unique constraint afaik and
the unique constraint we have isn't quite correct according to spec (yes,
the above should work).  Technically we should be checking the after all
updates have occurred, but iirc we do it on the insert into the index
which is why this happens.

The closest thing I could think of would be a constraint trigger that did
a uniqueness check but that'll probably be somewhat slower (a trigger that
looks for something like: select lft from areas group by lft having
count(*)>1;)



In response to

Responses

pgsql-general by date

Next:From: Frank JoerdensDate: 2002-01-29 17:28:21
Subject: Re: Multibyte encoding vs. SQL_ASCII vs. locales and European languages
Previous:From: Tom LaneDate: 2002-01-29 17:12:55
Subject: Re: Moving my business to PostgreSQL

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group