Prevent overlapping TSRANGE
You need the btree_gist extension so that you can create a GiST index on an uuid:

CREATE EXTENSION btree_gist;


Now you can create an exclusion constraint:

ALTER TABLE reservations ADD EXCLUDE USING gist (
   reservable_id WITH =,
   reserved_between WITH &amp;&amp;
);


&amp;&amp; is the &ldquo;overlaps&rdquo; operator for ranges.