미세한 변화: PostgreSQL의 NOT VALID와 NOT ENFORCED 제약 조건 이해하기
작성자: Amul Sul 작성일: 2026년 3월 27일 PostgreSQL은 뛰어난 데이터 무결성(Data Integrity)을 자랑하는 것으로 잘 알려져 있습니다. 하지만 데이터 세트가 테라바이트 단위로 커짐에 따라, 이러한 무결성을 유지하기 위한 비용이 시스템의 병목 현상(Bottleneck)을 유발하기도 합니다. 이러한 문제를 해결하기 위해 PostgreSQL은 제약 조건(Constraints)에 대한 다양한 “상태(States)”를 제공하고 있습니다. 많은 분들이 기존의 NOT VALID 옵션에는 익숙하시겠지만, 최근 SQL:2023 표준의 새로운 개념이 도입되었습니다. 바로 PostgreSQL 18에 공식적으로 추가된 NOT ENFORCED입니다. 이 두 가지는 이름만 보면 비슷하게 들릴 수 있지만, 데이터베이스의 라이프사이클 내에서 매우 다른 역할을 수행합니다. 💡 TL;DR (핵심 요약) PostgreSQL에서 제약 조건은 단순히 엄격하게 “켜짐(On)” 또는 “꺼짐(Off)” 상태로만 존재하는 것은 아닙니다. 참고: PostgreSQL 18 기준으로 NOT ENFORCED 상태는 CHECK 및 외래 키(FOREIGN KEY) […]
