I think this is simply a case of optimistic locking - there is a general
way and very often db specific ways

first you get the current active value ... (one row)

currentValue from "select counterfield from tablename"


then you update the table (single row)


update
  tablename
set
  counterfield = currentValue + 1
where
  counterfield = currentValue

commit

then you look how many rows have been changed (=1) and assume, that
commit was successful and then you know if you were successful ...
otherwise you must retry ...

this is a simple, with worst performance but portale approach ...

Marten


Am 16.04.2014 21:52, schrieb Esteban A. Maringolo:
> Hi,
> 
> A few weeks ago Sven was asking for a lock-free in-image atomic counter.
> 
> Today I'm in need of implementing a DB backed (PGSQL) counter for
> business forms numbering, and maybe there are some toughts you're
> willing to share :)
> 
> I can't find any other way than a row lock for each counter, but maybe
> there is something better (I avoid locks as much as possible).
> 
> Any thoughts to share here?
> 
> Regards!
> 


-- 
Marten Feldtmann

Reply via email to