From: | Marc Munro <marc(at)bloodnok(dot)com> |
---|---|
To: | Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com> |
Cc: | tgl(at)sss(dot)pgh(dot)pa(dot)us, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: referential Integrity and SHARE locks |
Date: | 2007-02-08 20:32:05 |
Message-ID: | 1170966725.21038.64.camel@bloodnok.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Thu, 2007-08-02 at 12:24 -0800, Stephan Szabo wrote:
> On Thu, 8 Feb 2007, Marc Munro wrote:
>
> > I don't think this does stop the second from continuing before the
> > first. What will stop it, is the eventual lock that is taken on the
> > child (triggering) record.
>
> But at that point, you've already had to compose the new row in order to
> call the trigger for the ri check, right? So, one of those new rows will
> be out of date by the time it actually gets the lock. Presumably that
> means that you need to recalculate the new row, but you've already done a
> check and gotten a lock based on the old new row.
Yes. That is tricky. For my proposed scheme to work, I guess we'd have
to be able to drop those locks which were just acquired by the RI
triggers. Not too simple, I guess.
> Also, another big problem is the fact that SQL requires that the action
> already have happened before the check in cases where the constraint
> references the same table. The row being updated or inserted might
> reference a row that will be updated or inserted by a later action of the
> same statement.
Hmmm. That does seem to be the final nail in the coffin. Consider the
proposal withdrawn, and thanks for explaining it all to me.
__
Marc
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2007-02-08 20:32:41 | Re: Proposal: Commit timestamp |
Previous Message | Bruce Momjian | 2007-02-08 20:27:31 | Re: [PATCHES] [pgsql-patches] Phantom Command IDs, updated patch |