On 25.11.2010 12:51, MIkhail Puzanov wrote:
>
>
> 2010/11/25 Tom Lane <t...@sss.pgh.pa.us <mailto:t...@sss.pgh.pa.us>>
>
>     "Mikhail V. Puzanov" <misha.puza...@gmail.com
>     <mailto:misha.puza...@gmail.com>> writes:
>     >    -- increment and get the counter if exists
>     >   UPDATE sequences SET counter = counter + 1
>     >   WHERE section = 'testSection' AND name = 'testKey'
>     >   RETURNING counter;
>
>     Seems that what you have here is a bad manual implementation of a
>     sequence.  Why don't you use a real sequence object and nextval()?
>
>
>
> Well, if I use the real sequence, I'll need unpredictable number of them
> and will have to store mapping (section, name)->sequenceName, and
> also will have to create those sequences dynamically the similar way.
>

Finally the problem solved with application level locks (that works for
only
one application server, but suits our needs for now).

This also works
http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE
but we need some more or less cross-DBMS approach.

Reply via email to