sungyup's.

PostgreSQL / PostgreSQL / 3.2 Database-Side Validation and Constraints

3.2Database-Side Validation and Constraints

Row-Level Validatation

  • 데이터가 insert/update 되었을 때 체크할 것
    • Is a given value defined?
    • Is a value unique in its column?
    • Is a value >, <, \≥, ←, = some other values?

예시

sql
CREATE TABLE products ( id SERIAL PRIMARY KEY, name VARCHAR(40), department VARCHAR(40), price INTEGER, weight INTEGER )

위와 같이 테이블을 만든 상황에서,

  1. NULL constraint

우선, 테이블을 만들때

sql
price INTEGER NOT NULL //....

식으로 만들어서 제한할 수도 있음.

만들고 나서는

sql
ALTER TABLE products ALTER COLUMN price SET NOT NULL;

만약 이미 NULL 값이 있으면 에러가 뜸.

이럴 때는 기존 값 update후 제한 적용.

sql
UPDATE products SET price = 9 WHERE price IS NULL -- WHERE price = NULL 아님!
  1. Default Column Values

테이블을 만들 때,

sql
price INTEGER DEFAULT 9

식으로 value를 안 넣어도 기본값이 들어가도록 설정해두면, 빈 값을 넣으면 NULL이 아니라 설정한 기본값이 들어감.

또는, 테이블 생성 이후

sql
ALTER TABLE products ALTER COLUMN price SET DEFAULT 9;

위와 같은 방식으로 새로운 기본값 설정 가능

  1. Unique Constraint
sql
name VARCHAR(50) UNIQUE

식으로 테이블 생성할 때 제약 넣을 수 있음.

또는, 테이블 생성 이후

sql
ALTER TABLE products ADD UNIQUE(name);

식으로 새로운 unique constraint 적용 가능

  1. Multi-Column Uniqueness