On Sat, 2011-01-15 at 21:32 +0100, Tomas Vondra wrote:
> > ALTER TABLE event ADD CONSTRAINT event_overlap
> > CHECK(overlap_at_dest(destination_id, starts, ends));
>
> There's a race condition
...
> One way to fix this is locking
I do not recommend locking. In fact, the primary reason that exclusion
constraints exist is to prevent unnecessary locking for problems exactly
like this.
I included some links in my other reply that demonstrate how to avoid
that excessive locking while still being safe from race conditions.
Regards,
Jeff Davis