Fwd: Atomar SQL Statement

From: "Aaron Bono" <postgresql(at)aranya(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: Fwd: Atomar SQL Statement
Date: 2006-07-07 19:42:10
Message-ID: bf05e51c0607071242h1c4f1977q52cd4bfe895c7a4a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On 7/7/06, Scott Marlowe <smarlowe(at)g2switchworks(dot)com> wrote:

> On Fri, 2006-07-07 at 13:07, Stephan Szabo wrote:
> > On Fri, 7 Jul 2006, Michael Glaesemann wrote:
> >
> > >
> > > On Jul 7, 2006, at 7:55 , Weber, Johann (ISS Kassel) wrote:
> > >
> > > > My concern: in a multi threaded environment, can a second thread
> > > > interrupt this statement and eventually insert the same email
> > > > address in
> > > > the table with a different id? Or is this statement atomar?
> > >
> > > You're safe. Take a look at the FAQ entries on SERIAL:
> > >
> > > http://www.postgresql.org/docs/faqs.FAQ.html#item4.11.2
> >
> > I don't think he is, because I don't think the issue is the SERIAL
> > behavior, but instead the NOT EXISTS behavior. Won't the NOT EXISTS in
> > read committed potentially be true for both concurrent sessions if the
> > second happens before the first commits, which then would mean that both
>
> > sessions will go on to attempt the insert (with their own respective ids
> > from the serial)? Without a unique constraint on email I think he can
> end
> > up with the same email address with two different ids.
>
> Yep, this is a possible race condition, if memory serves, and this is
> the reason for unique indexes. That way, should another transaction
> manage to sneak in between the two parts of this query, the unique index
> will still keep your data coherent.

I deal with these issues by first placing a unique constraint on the email
field (as was suggested above) and then synchronizing the code that does the
check and insert. I have also looked for instances where a unique
constraint error is thrown and had the system give the user a meaningful
error or responded appropriately.

-Aaron

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Aaron Bono 2006-07-07 19:45:51 Re: SELECT substring with regex
Previous Message T E Schmitz 2006-07-07 19:23:50 Re: SELECT substring with regex