MySQL 테이블에 CHECK 제약 조건 추가하기
MySQL에서 테이블에 CHECK 제약 조건을 추가하면 특정 컬럼에 저장되는 값이 지정한 조건을 만족하는지 데이터베이스 차원에서 자동으로 검증할 수 있습니다. 예를 들어, 나이(Age) 값이 항상 45 이상이어야 한다는 규칙을 강제할 수 있습니다.
1. 기본 문법
테이블에 CHECK 제약 조건을 추가하려면 테이블을 생성할 때 다음과 같이 작성합니다.
CREATE TABLE yourTableName (
Column_name1 datatype,
.
.
.
Column_nameN datatype,
CHECK( condition )
);
2. 나이 검증 조건 작성하기
예를 들어, 나이가 45세 이상인 값만 허용하려면 아래와 같은 CHECK 조건을 사용합니다.
CHECK(Age >= 45)
3. 실제 적용 예제
이제 실제로 테이블을 생성하면서 위에서 살펴본 나이 관련 CHECK 제약 조건을 함께 추가해 보겠습니다.
mysql> CREATE TABLE addCheckConstraintDemo
-> (
-> Age int,
-> CHECK(Age>=45)
-> );
Query OK, 0 rows affected (0.55 sec)
쿼리가 정상적으로 실행되면 "Query OK" 메시지와 함께 테이블이 생성됩니다. 이후 이 테이블에 나이가 45 미만인 데이터를 삽입하려고 하면 오류가 발생하여 잘못된 값의 입력을 막을 수 있습니다.
참고 사항
MySQL 8.0.16 버전부터 CHECK 제약 조건이 실제로 강제(enforce)됩니다. 그 이전 버전(5.7 등)에서는 CHECK 구문을 작성해도 서버가 이를 무시하므로, 사용 전에 반드시 MySQL 버전을 확인하는 것이 좋습니다. 또한 이미 존재하는 테이블에 제약 조건을 나중에 추가하려면 ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 CHECK(조건); 구문을 활용할 수 있습니다.