체크 제약에 대해 알아보자.
CHECK 제약을 사용하면 삽입된 모든 값이 특정 정수값 밑으로 떨어지는 지 확인하는 등의 보다 맞춤화된 제약 조건을 만들 수 있다.
CREATE TABLE example(
ex_id SERIAL PRIMARY KEY,
age SMALLINT CHECK (age > 21),
parent_age SMALLINT CHECK (
parent_age > age)
);
CREATE TABLE employees(
emp_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
birthdate DATE CHECK (birthdate > '1900-01-01'),
hire_date DATE CHECK (hire_date > birthdate),
salary INTEGER CHECK (salary > 0)
)
pgadmin 에서 이렇게 테이블을 만들 수 있다.
이제 값들을 추가해보자.
employees 테이블에 하나의 행을 삽입할 건데,
INSERT INTO employees(
first_name,
last_name,
birthdate,
hire_date,
salary
)
VALUES
('Jeon',
'aengzu',
'2001-08-20',
'2020-01-01',
100
)
실행해보면 제대로 데이터가 들어갔음을 확인할 수 있다.
만약 조건을 안지키고 봉급에 음수를 넣으면 에러가 뜬다.
그런데 SERIAL 넘버는 실패가 있어도 카운팅 된다는 것을 확인할 수 있다.