TIL

Exclusion Constraint (범위 겹침 방지)

구성 요소

Range Type

GiST 인덱스

btree_gist 확장

정의와 동작

CREATE EXTENSION btree_gist;            -- 스칼라 = 를 GiST에서 쓰기 위해

CREATE TABLE reservation (
  room_id int,
  during  tstzrange,
  EXCLUDE USING gist (room_id WITH =, during WITH &&)   -- 같은 방 + 시간 겹침 금지
);

INSERT INTO reservation VALUES (1, '[2026-01-01 10:00, 2026-01-01 11:00)');
INSERT INTO reservation VALUES (1, '[2026-01-01 10:30, 2026-01-01 11:30)');
-- ERROR: conflicting key value violates exclusion constraint (SQLSTATE 23P01)

동시성 — write-skew를 DB가 직렬화

경계 [) 의 중요성

한계와 주의점

MySQL에는 없음

참고