From: Glenn Maynard <glennfmaynard@gmail.com>
To: Richard Broersma <richard.broersma@gmail.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: changing multiple pk's in one update
Date: Mon, 13 Apr 2009 17:32:53 -0400
Message-ID: <d18085b50904131432o1d3af00ci250d1077024648f5@mail.gmail.com> (raw)
In-Reply-To: <396486430904131418g3898dc5h2472f9efab331489@mail.gmail.com>
References: <49DC1034.1060705@frii.com>
<dcc563d10904101120y49f00977nc74132e982518444@mail.gmail.com>
<49E37441.6030301@frii.com>
<d18085b50904131409g10d43d6cs35dd14ede13bc02@mail.gmail.com>
<396486430904131418g3898dc5h2472f9efab331489@mail.gmail.com>
On Mon, Apr 13, 2009 at 5:18 PM, Richard Broersma
<richard.broersma@gmail.com> wrote:
>> Your PK is a composite of (entry, order)? Won't your foreign keys
>> elsewhere all break when you shift the order around?
>
> If there really are foreign keys, then an update will not be allowed
> to shift a primary key unless the foreign key is set with ON UPDATE
> CASCADE then the shifts will be cascaded to all references
> automatically.
Right. I'm still dusting off my SQL after a long period of corrosion. :)
The same applies, though, if you have external references to the PK;
for example, if you have a web interface where "/sense/10/3" refers to
entry 10, sense 3. If your senses are reordered by someone else, and
you operate on /10/3, you may suddenly find yourself viewing or
modifying (or deleting!) a different sense. This could even happen
within the same transaction, if you're not very careful with
locking...
--
Glenn Maynard
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: glennfmaynard@gmail.com, richard.broersma@gmail.com
Subject: Re: changing multiple pk's in one update
In-Reply-To: <d18085b50904131432o1d3af00ci250d1077024648f5@mail.gmail.com>
* 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