PostgreSQL 18 · 공식 문서 해설

PostgreSQL NOT VALID: 제약조건 추가 후 기존 오류 행이 남는 이유

제약조건 추가가 성공했는데 예전 불량 행이 그대로라면, 낫 밸리드를 확인해야 합니다.
PostgreSQL NOT VALID: 제약조건 추가 후 기존 오류 행이 남는 이유
배포 성공 ≠ 과거 데이터 검증 완료foreign key·CHECK에 적용 가능한 문서상 동작NOT VALID ≠ NOT ENFORCED

제약조건 추가가 성공했는데 예전 불량 행이 그대로라면, 낫 밸리드를 확인해야 합니다.

증상부터 분리

제약조건 추가가 성공했는데 예전 불량 행이 그대로라면, 낫 밸리드를 확인해야 합니다.

공식 문서에서 확인되는 핵심

포스트그레스큐엘 십팔에서 낫 밸리드로 포린 키나 체크 제약을 추가하면, 기존 행 전체 검사를 건너뛸 수 있습니다.

그렇다고 제약이 꺼진 건 아닙니다. 이후 들어오는 인서트나 업데이트에는 제약이 적용됩니다.

다섯 장면으로 정리

장면핵심조건
1제약조건 추가 성공! 예전 불량 행은 그대로?!배포 성공 ≠ 과거 데이터 검증 완료
2NOT VALID 기존행 스캔 생략foreign key·CHECK에 적용 가능한 문서상 동작
3새 INSERT·UPDATE 여전히 검사NOT VALID ≠ NOT ENFORCED
4기존행 검증은 VALIDATE 별도VALIDATE CONSTRAINT가 과거행 검사
5배포 성공 ≠ 과거 무결성 완료운영 SQL 실행·lock 측정 아님

여기까지는 단정하면 안 됩니다

예전 행까지 검증하려면 밸리데이트 컨스트레인트를 별도로 실행해야 합니다. 문서는 이 검증이 별도 잠금을 사용한다고 설명합니다.

설정 변경 전 읽기 전용 확인

검증 범위

제약 추가 성공과 과거 데이터 검증 완료를 같은 것으로 보면 안 됩니다. 실제 운영 에스큐엘은 실행하지 않은 문서 기반 가상 예시입니다.

이 글은 제조사 공식 문서를 해설하고 가상 도식을 사용한 교육 자료입니다. 실제 장비·운영 데이터베이스·고객 데이터·장애·복구·성능 시험 결과를 주장하지 않습니다.

짧은 영상으로 보기

YouTube 채널

YouTube 예약 영상의 실제 ID가 생기면 이 링크만 연결할 수 있습니다. 글과 로컬 영상 자체는 독립적으로 확인 가능합니다.