본문 바로가기

Database/SQL

Check 키워드로 제약조건 설정(DB Validation) 하기

DB에서 Validation 설정하기

 

Validation은 이전에 Node와 Nest.js를 하면서 각종 라이브러리를 사용해봤다

(JOI나 express-validator, Nest Interceptor 등...)

 

그런데 DB에서 자체적으로 Check를 통해 Validation을 수행할수 있다는건

처음 알게 되었다.

그런데 사실 Validation이 중요한 작업이긴 한데... 사실 좀 귀찮은것도 사실이다.

하지만 그럼에도 DB에도 최대한 안전장치를 걸어두면 좋은 이유가 있다.

 

예를들어 Node.js를 사용하다가, Go로 개발할 일이 생겼다고 가정해보자.

그런데 실수로 Go로 개발한 부분이 Validation을 빼먹거나, 오류가 생기는 상황이 생긴다면?

 

DB에 Validation에서 그런 상황을 막아주게 된다. 

 

그럼 이 Validation을 어떻게 하느냐. 간단하다.

 

CHECK 키워드를 입력하고 괄호열고 조건을 써주면 된다.

 

예를들어 배송 관련 DB가 있는데, 제조시간과 배송시간이 있다고 치자.

 

CREATE TABLE orders {

    ....

   created_at TIMESTAMP NOT NULL,

   est_delivary TIMESTAMP NOT NULL,

   CHECK (created_at < est_delivery) 

}

 

로 체크를 설정해두면 제작시간보다 배송시간이 더 빠르게 입력되는 참사를

미연에 방지할수 있다. 물론 서버단에서도 처리를 해 줘야겠지만....

 

예시로 든 사례가 꽤나 빈번하게 실제 프로젝트에서 이루어지는거라서

더 신경써야한다고 생각한다

(예약 관련 기능에서 오늘날자 이전으로 서비스를 예약한다거나...)


'Database > SQL' 카테고리의 다른 글

COALESCE와 ::(double colon) 의미  (0) 2023.04.26