[SQL] 독특한 날짜 범위에 대한 포스트 그레스 제약
SQL독특한 날짜 범위에 대한 포스트 그레스 제약
내 표는 두 개의 열이 있습니다
홀드 날짜와 시간을 모두. 나는 제약 다음 만들고 싶어 :
모두 열이 NULL이 아닌 경우 다음 startsAt 및 endsAt해야하지 중복 다른 범위와 (다른 행에서) 사이의 범위.
해결법
-
==============================
1.당신은 별도의 타임 스탬프 열을 유지하고 여전히 표현에 제외 제약 조건을 사용할 수 있습니다 :
당신은 별도의 타임 스탬프 열을 유지하고 여전히 표현에 제외 제약 조건을 사용할 수 있습니다 :
CREATE TABLE tbl ( tbl_id serial PRIMARY KEY , starts_at timestamp , ends_at timestamp , EXCLUDE USING gist (tsrange(starts_at, ends_at) WITH &&) -- no overlapping );
tsrange (starts_at, ends_at)와 같은 명시적인 경계없이 tsrange 값을 구축 자동으로 기본 범위를 가정합니다 낮은 포함 상부 제외 - '[)', 일반적으로 가장 적합한.
SQL 바이올린.
관련 :
ALTER TABLE tbl ADD CONSTRAINT tbl_no_overlapping_time_ranges EXCLUDE USING gist (tsrange(starts_at, ends_at) WITH &&)
구문 세부 사항은 테이블 만들기와 동일합니다.
from https://stackoverflow.com/questions/26735955/postgres-constraint-for-unique-datetime-range by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] ORA-30926 : 테이블을 병합 할 때 소스 테이블의 행의 안정적인 세트를 얻을 수 없습니다 (0) | 2020.07.08 |
---|---|
[SQL] SQL 서버 2008 : 중간 위치 변경 데이터 형식에 새 열을 삽입 할 수 없습니다 (0) | 2020.07.08 |
[SQL] SQL 서버에서 한 달에 한 행으로 분할 날짜 범위 (0) | 2020.07.08 |
[SQL] CTE를 사용하여 문자열 분할에 효율적인 방법 (0) | 2020.07.08 |
[SQL] 그것에서 상속 부모를 쿼리 할 때 행의 소스 테이블의 이름을 가져옵니다 (0) | 2020.07.08 |