피드로 돌아가기
Alter Tables
Dev.toDev.to
Database

ALTER TABLE 문을 활용해 NOT NULL, UNIQUE, CHECK, DEFAULT, FOREIGN KEY 제약조건을 추가 및 제거하는 8가지 데이터베이스 스키마 변경 패턴

Alter Tables

Anjana R.K.2026년 3월 29일2beginner

Context

데이터베이스 테이블은 생성 후 비즈니스 요구사항 변화에 따라 제약조건을 추가하거나 수정해야 한다. 기존 테이블의 스키마를 변경할 때 각 상황에 맞는 ALTER TABLE 문법을 정확히 알아야 한다.

Technical Solution

  • NOT NULL 제약조건 추가: ALTER COLUMN으로 기존 컬럼의 NULL 허용 여부를 SET NOT NULL로 변경
  • UNIQUE 제약조건 추가: ADD CONSTRAINT로 단일 컬럼 또는 복합 컬럼(user_id, transaction_id)의 유니크성 강제
  • CHECK 제약조건 추가: ADD CONSTRAINT로 가격(price > 0) 또는 급여(salary > 10000) 같은 값 범위 검증 규칙 정의
  • DEFAULT 값 설정: ALTER COLUMN으로 status 같은 컬럼에 'pending' 같은 기본값 지정
  • 새 컬럼 추가 시 제약조건 병합: ADD COLUMN salary NOT NULL CHECK(salary > 10000)로 컬럼 생성과 동시에 여러 제약조건 적용
  • CASCADE 삭제 규칙 설정: FOREIGN KEY에 ON DELETE CASCADE를 추가해 부모 레코드 삭제 시 자식 레코드 자동 제거
  • 제약조건 제거: DROP CONSTRAINT로 기존 CHECK 제약조건(accounts_balance) 삭제

Key Takeaway

ALTER TABLE은 스키마 변경의 핵심 도구로, 프로덕션 환경의 데이터 무결성을 강제하는 제약조건들을 유연하게 추가·제거할 수 있다. 각 제약조건의 목적을 명확히 파악하면 데이터 검증 로직을 데이터베이스 수준에서 일관되게 관리할 수 있다.


데이터 검증이 필요한 백엔드 서비스에서는 애플리케이션 코드의 검증 로직과 함께 ALTER TABLE로 NOT NULL, UNIQUE, CHECK 제약조건을 데이터베이스에 정의하면 잘못된 데이터가 저장되는 것을 근본적으로 차단할 수 있다.

원문 읽기