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?
예시
sqlCREATE TABLE products ( id SERIAL PRIMARY KEY, name VARCHAR(40), department VARCHAR(40), price INTEGER, weight INTEGER )
위와 같이 테이블을 만든 상황에서,
- NULL constraint
우선, 테이블을 만들때
sqlprice INTEGER NOT NULL //....
식으로 만들어서 제한할 수도 있음.
만들고 나서는
sqlALTER TABLE products ALTER COLUMN price SET NOT NULL;
만약 이미 NULL 값이 있으면 에러가 뜸.
이럴 때는 기존 값 update후 제한 적용.
sqlUPDATE products SET price = 9 WHERE price IS NULL -- WHERE price = NULL 아님!
- Default Column Values
테이블을 만들 때,
sqlprice INTEGER DEFAULT 9
식으로 value를 안 넣어도 기본값이 들어가도록 설정해두면, 빈 값을 넣으면 NULL이 아니라 설정한 기본값이 들어감.
또는, 테이블 생성 이후
sqlALTER TABLE products ALTER COLUMN price SET DEFAULT 9;
위와 같은 방식으로 새로운 기본값 설정 가능
- Unique Constraint
sqlname VARCHAR(50) UNIQUE
식으로 테이블 생성할 때 제약 넣을 수 있음.
또는, 테이블 생성 이후
sqlALTER TABLE products ADD UNIQUE(name);
식으로 새로운 unique constraint 적용 가능
- Multi-Column Uniqueness
NextNo next post