On 24 Jul 2003, Greg Stark wrote:

> 
> So I have to adjust a primary key by adding one to every existing record.
> Obviously this isn't a routine operation, my data model isn't that messed up.
> It's a one-time manual operation.
> 
> However when I tried to do the equivalent of:
> 
>   update tab set pk = pk + 1
> 
> I got 
> 
>   ERROR:  Cannot insert a duplicate key into unique index tab_pkey
> 
> Is that right? Obviously after completing the query there would be no
> duplicate keys. Is this a case where I would need deferred constraints to
> allow this? Even for immediate constraints shouldn't a single sql update be
> able to go ahead as long as it leaves things in a consistent state?

I've run into this before.  If your pks are in the range of say 1 to 1000, 
then just add 50000 to them, then subtract 49999...


---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to