Locking to restrict rowcounts. - Mailing list pgsql-general

From Shakil Shaikh
Subject Locking to restrict rowcounts.
Date
Msg-id BAY117-DS963528810A4240924FAD0AC5B0@phx.gbl
Whole thread Raw
Responses Re: Locking to restrict rowcounts.  (Richard Huxton <dev@archonet.com>)
Re: Locking to restrict rowcounts.  ("Shakil Shaikh" <sshaikh@hotmail.com>)
List pgsql-general
Hi,

Consider the following scenario:

CREATE FUNCTION test(name)
select into cnt count(id) from items where owner = name;
--suppose someone inserts during this point? then next check will succeed
when it should not.
if (cnt < 10) then
    insert into items values ('new item', name);
end;
end;

What is the best way to stop this function from entering too many items in a
concurrent context? I think a lock is needed, although I'm not sure which
would be most appropriate since the count requires the whole table (or at
least no adds to have occurred I think I read something about predicate
locking which sounds relevant but isn't supported in PostgreSQL. Ideally I
want some kind of lock only relevant to "name" above.

Any strategies to deal with this?

Shak


pgsql-general by date:

Previous
From: "James B. Byrne"
Date:
Subject: Help with join syntax sought
Next
From: Richard Huxton
Date:
Subject: Re: Locking to restrict rowcounts.