Re: implementing (something like) UNIQUE constraint using PL/pgSQL
От | Michael Glaesemann |
---|---|
Тема | Re: implementing (something like) UNIQUE constraint using PL/pgSQL |
Дата | |
Msg-id | 51AAD09D-F90D-480F-A93E-0C57246415D7@seespotcode.net обсуждение исходный текст |
Ответ на | Re: implementing (something like) UNIQUE constraint using PL/pgSQL (Bruno Wolff III <bruno@wolff.to>) |
Список | pgsql-sql |
On Jan 27, 2007, at 16:55 , Bruno Wolff III wrote: > On Fri, Jan 26, 2007 at 10:41:26 +0100, > Tomas Vondra <tv@fuzzy.cz> wrote: >> >> in our application we need to implement a constraint that enforces >> 'at >> most N rows with this value', that is we have a table with 'flag' >> column >> and for each value there should be at most 10 rows (for example, the >> exact number does not matter). > > Another approach is to add a instance number column and constrain that > value to be between 1 and 10. And make value and instance number > unique. > You'll need to do a bit more work when inserting new rows than normal > (to find a free instance number). This should be very robust against > getting in a bad state. > If you go with enforcing the condition with a trigger you need to > be careful > about simultaneous inserts and visibility. This may have already been mentioned upthread, but this sounds like a special case of the SQL queues I saw on Greg Sabino Mullane's blog: http://people.planetpostgresql.org/greg/index.php?/archives/89- Implementing-a-queue-in-SQL-Postgres-version.html Perhaps you could tweak that to serve your needs. Michael Glaesemann grzm seespotcode net
В списке pgsql-sql по дате отправления: