반응형
CHECK
제약 조건은 PostgreSQL에서 특정 컬럼의 값이 특정 조건을 충족하는지 확인하는 데 사용됩니다. 테이블에 데이터를 삽입하거나 수정할 때 CHECK
조건이 참인지 검증하며, 조건을 만족하지 않으면 에러가 발생해 데이터가 테이블에 반영되지 않습니다.
1. CHECK
사용법
테이블을 생성할 때 CHECK
제약 조건을 사용할 수 있으며, CREATE TABLE
구문에 직접 추가하거나 나중에 ALTER TABLE
을 통해 추가할 수 있습니다.
CREATE TABLE 테이블_이름 (
컬럼_이름 데이터_타입 CHECK (조건식)
);
또는 여러 컬럼을 대상으로 하는 제약 조건을 만들 수 있습니다.
2. 예제
employees
테이블에서 다음과 같은 CHECK
제약 조건을 설정한다고 가정해 보겠습니다.
age
컬럼은 18세 이상이어야 합니다.salary
컬럼은 0 이상의 값을 가져야 합니다.department
컬럼은 'HR', 'Sales', 'IT' 중 하나여야 합니다.
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT CHECK (age >= 18), -- age는 18 이상이어야 함
salary NUMERIC CHECK (salary >= 0), -- salary는 0 이상이어야 함
department VARCHAR(20) CHECK (department IN ('HR', 'Sales', 'IT')) -- department는 지정된 목록에 속해야 함
);
3. 예제 설명
age
가 18 미만인 경우, 삽입 또는 업데이트가 실패합니다.salary
가 0 미만인 경우, 삽입 또는 업데이트가 실패합니다.department
가 'HR', 'Sales', 'IT' 중 하나가 아니면 삽입 또는 업데이트가 실패합니다.
4. 예제 데이터 삽입
위의 테이블을 기준으로, 조건을 충족하는 데이터와 그렇지 않은 데이터를 삽입해보겠습니다.
- 조건을 충족하는 데이터:이 데이터는
age
,salary
,department
가 모두CHECK
조건을 만족하므로 정상적으로 삽입됩니다. INSERT INTO employees (name, age, salary, department) VALUES ('Alice', 25, 50000, 'HR');
- 조건을 충족하지 않는 데이터:
- 여기서
age
가 18 미만이고,department
가 허용된 값 중 하나가 아니므로 오류가 발생합니다.
- 여기서
INSERT INTO employees (name, age, salary, department) VALUES ('Bob', 17, 40000, 'Finance');
5. 기존 테이블에 CHECK
제약 추가하기
이미 생성된 테이블에 CHECK
제약 조건을 추가하려면 ALTER TABLE
구문을 사용합니다.
ALTER TABLE employees
ADD CHECK (salary >= 30000); -- salary는 30000 이상이어야 함
6. 주의사항
CHECK
조건은 단일 컬럼뿐만 아니라 여러 컬럼을 조합해 설정할 수도 있습니다.- 조건이 복잡해질수록 데이터 검증 속도에 영향을 줄 수 있으므로, 성능을 고려하여 설계하는 것이 좋습니다.
이렇게 CHECK
제약 조건을 사용하면 데이터의 무결성을 유지하면서 유효한 값만 테이블에 저장되도록 할 수 있습니다.
반응형
'DB > PostgreSQL' 카테고리의 다른 글
[ PostgreSQL ] build - 소스 Build해서 설치하기 (RHEL 7.6) (0) | 2024.12.03 |
---|---|
[ PostgreSQL ] PostgreSQL 버전 확인하기 (0) | 2024.12.02 |
[ PostgreSQL ] REFERENCES - 다른 테이블의 key를 사용하기 (0) | 2024.11.14 |
[ PostgreSQL ] \c - 사용할 데이터베이스 선택하기 (0) | 2024.11.14 |
[ PostgreSQL ] PRIMARY KEY - 식별자 Key 사용하기 (0) | 2024.11.14 |