| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | Christopher Smith <x(at)xman(dot)org> |
| Cc: | pgsql-sql(at)postgresql(dot)org, pgsql-jdbc(at)postgresql(dot)org |
| Subject: | Re: [SQL] Problems ensuring uniqueness? |
| Date: | 2001-06-18 21:42:15 |
| Message-ID: | 8896.992900535@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-jdbc pgsql-sql |
Christopher Smith <x(at)xman(dot)org> writes:
> begin
> lock table foo in access exclusive mode
> select count(*) from foo where key1 = bar, key2 = baz
> if count > 1
> rollback
> else
> insert into foo (key1, key2, other) values (bar, baz, stuff)
> commit
> Now, table foo has a primary key made up of key1 & key2. Without
> concurrent access, the code works great. However, provided I use enough
> threads, I inevitably get back errors from the database indicating that
> I've tried to insert a record which violates the uniquness of the
> primary key.
Um ... surely that should be "if count > 0" ? Or was that just a
transcription error?
This approach certainly ought to work as desired given the exclusive
lock, so a silly typo seems like a plausible explanation...
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Christopher Smith | 2001-06-18 21:57:45 | Re: [SQL] Problems ensuring uniqueness? |
| Previous Message | Tum Khawcharoenporn | 2001-06-18 21:21:18 | JDBC Ant Problem |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tony Reina | 2001-06-18 21:54:24 | Are there array functions in Postgres? |
| Previous Message | Ingo Oellers | 2001-06-18 21:13:08 | Re: Moving between databases |