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

ALTER TABLE을 통해 테이블 재생성 없이 제약 조건 8가지를 추가·수정·삭제하는 기법

Alter Queries

Christina Sharon S2026년 3월 29일1beginner

Context

기존 테이블 구조를 변경하려면 전체 테이블을 삭제하고 새로 생성해야 하는 상황이 있었다. 이 방식은 기존 데이터를 보존하면서 제약 조건을 동적으로 추가하거나 수정할 수 없는 한계가 있었다.

Technical Solution

  • NOT NULL 제약 조건 추가: ALTER TABLE customers ALTER COLUMN email SET NOT NULL로 기존 컬럼에 NULL 불허 조건 적용
  • UNIQUE 제약 조건 추가: ADD CONSTRAINT unique_username UNIQUE (username)로 컬럼 값의 중복을 방지
  • CHECK 제약 조건 추가: ADD CONSTRAINT price_check CHECK (price > 0)로 값의 범위 검증 규칙 설정
  • DEFAULT 값 설정: ALTER COLUMN status SET DEFAULT 'pending'로 신규 레코드의 기본값 지정
  • 신규 컬럼 추가 및 제약: ADD COLUMN salary INT NOT NULL CHECK (salary > 10000)로 단일 DDL에서 컬럼과 제약 동시 적용
  • 외래 키 제약 재정의: 기존 FOREIGN KEY 제약을 제거한 후 ON DELETE CASCADE 옵션을 포함해 다시 생성
  • CHECK 제약 제거: DROP CONSTRAINT accounts_balance_check로 불필요한 제약 조건 삭제
  • 복합 UNIQUE 제약: ADD CONSTRAINT unique_user_transaction UNIQUE (user_id, transaction_id)로 다중 컬럼 조합의 중복 방지

Key Takeaway

ALTER TABLE은 기존 데이터 손실 없이 테이블 구조를 유지보수할 수 있는 도구이다. 제약 조건을 명확한 이름으로 정의하면 향후 수정이나 제거 시 관리 효율이 향상된다.


프로덕션 데이터베이스에서 테이블 스키마를 변경해야 할 때 ALTER TABLE을 사용하면 기존 데이터를 유지한 채로 제약 조건을 추가·제거할 수 있으므로, 마이그레이션 시간과 데이터 손실 위험을 줄일 수 있다.

원문 읽기