Node.js
PostgreSQL Check란? Check를 사용하지 말아야하는 이유
임채성
2024. 4. 11. 21:03
PostgreSQL에는 Check란?
SQL 레벨에서 지원하는 제약조건입니다. (PostgreSQL만 지원하는 것이 아님.)
데이터 insert 요청 시 PostgreSQL DBMS가 값 검증을 수행해주는 제약조건입니다. 다음과 같이 사용할 수 있습니다:
CREATE TABLE products (
product_no integer,
name text,
price numeric CHECK (price > 0) -- 가격 컬럼에 항상 양수만 들어갈 수 있도록 검증
);
Check를 사용하면 이점
- 애플리케이션에서 값에 대한 검증을 하지 않아도 됨. 서버 코드가 굉장히 간단해짐.
반대로 존재하는 큰 단점
- DBMS 마이그레이션 시 검증 기능의 유실됨. 특정 DBMS에 의존하게 됨. (MySQL 8.0.16 이하버전 등 다른 RDBMS에는 Check 기능이 없음)
- 올바른 요청이 아님에도 커넥션을 요청하여 불필요한 비용 발생(커넥션 오버헤드)
2가지 큰 단점이 발생하여 존재하는 기능임에도 사용을 비추천드립니다.