피드로 돌아가기
Dev.toDatabase
원문 읽기
ALTER TABLE을 이용해 테이블 재생성 없이 제약조건, 기본값, 컬럼을 추가하거나 수정하는 방식
CA 40 – Alter Tables
AI 요약
Context
테이블을 생성한 후 구조를 변경해야 할 때는 기존에 테이블을 다시 만드는 방식을 사용했다. 이미 데이터가 존재하는 프로덕션 환경에서는 테이블 재생성이 복잡하고 위험한 작업이다.
Technical Solution
- NOT NULL 제약조건 추가: ALTER TABLE customers ALTER COLUMN email SET NOT NULL으로 email 컬럼을 필수 필드로 변경
- UNIQUE 제약조건 추가: ALTER TABLE users ADD CONSTRAINT unique_username UNIQUE (username)으로 username 중복 방지
- CHECK 제약조건 추가: ALTER TABLE products ADD CONSTRAINT price_check CHECK (price > 0)으로 price 값 범위 검증
- DEFAULT 값 설정: ALTER TABLE orders ALTER COLUMN status SET DEFAULT 'pending'으로 값 미입력 시 자동으로 'pending' 할당
- 새 컬럼 추가 및 제약조건: ALTER TABLE employees ADD COLUMN salary INT NOT NULL과 CHECK (salary > 10000)으로 급여 컬럼을 필수이면서 최솟값 조건 적용
- 외래키 연쇄 삭제 설정: 기존 외래키 제약조건을 제거한 후 ON DELETE CASCADE를 추가해 부서 삭제 시 해당 직원 자동 삭제
- 제약조건 제거: ALTER TABLE accounts DROP CONSTRAINT accounts_balance_check로 기존 제약조건 삭제
- 복합 UNIQUE 제약조건: ALTER TABLE payments ADD CONSTRAINT unique_payment UNIQUE (user_id, transaction_id)으로 사용자당 거래 중복 방지
Key Takeaway
ALTER TABLE은 기존 데이터를 유지하면서 테이블 구조를 수정할 수 있으므로 프로덕션 환경에서 데이터 손실 없이 스키마 변경을 수행할 수 있다.
실천 포인트
운영 중인 데이터베이스에서 제약조건이나 컬럼을 추가해야 할 때 ALTER TABLE 명령어를 사용하면 기존 데이터를 보존하면서 테이블 구조를 직접 수정할 수 있다.