Thread: Conditional Adding to a Table

Conditional Adding to a Table

From
Glenn Sullivan
Date:
Greetings,

I need to check a table to see if an item already exist in the table.
It if does not, then I want to add it.  Unfortunately, multiple processes
(Solaris system) can be running at the same time.  Sometimes, one process
checks to see if an item exist and it does not. At the same time another
process checks to see if the same item exist and it does not.  Then both,
add the item to the table.  This is, of course, not what I want.

I cannot seem to figure out how to do a conditional test to do something
like this.  If I could, then the whole operation could fit in one transaction
with locking.

Any ideas?

Thanks,
Glenn

Re: Conditional Adding to a Table

From
"Aasmund Midttun Godal"
Date:
just add a unique constraint on the things you want to be unique...
On Wed, 10 Oct 2001 14:37:09 -0600, Glenn Sullivan <glenn.sullivan@varianinc.com> wrote:
> Greetings,
>
> I need to check a table to see if an item already exist in the table.
> It if does not, then I want to add it.  Unfortunately, multiple processes
> (Solaris system) can be running at the same time.  Sometimes, one process
> checks to see if an item exist and it does not. At the same time another
> process checks to see if the same item exist and it does not.  Then both,
> add the item to the table.  This is, of course, not what I want.
>
> I cannot seem to figure out how to do a conditional test to do something
> like this.  If I could, then the whole operation could fit in one transaction
> with locking.
>
> Any ideas?
>
> Thanks,
> Glenn
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

Aasmund Midttun Godal

aasmund@godal.com - http://www.godal.com/
+47 40 45 20 46

Re: Conditional Adding to a Table

From
Allan Engelhardt
Date:
You could use a LOCK TABLE statement to gain an exclusive lock, but a better approach is probably to put a unique
constrainton whatever your check is and then just attempt the INSERT. 

Hope this helps a little....


Allan.

Glenn Sullivan wrote:

> Greetings,
>
> I need to check a table to see if an item already exist in the table.
> It if does not, then I want to add it.  Unfortunately, multiple processes
> (Solaris system) can be running at the same time.  Sometimes, one process
> checks to see if an item exist and it does not. At the same time another
> process checks to see if the same item exist and it does not.  Then both,
> add the item to the table.  This is, of course, not what I want.
>
> I cannot seem to figure out how to do a conditional test to do something
> like this.  If I could, then the whole operation could fit in one transaction
> with locking.
>
> Any ideas?
>
> Thanks,
> Glenn
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)