개요
테이블 이름 변경은 ALTER TABLE로도 가능하지만, RENAME TABLE을 쓰면 다수 테이블을 한 번에 처리 가능하며 같은 서버 내 다른 데이터베이스로 이동까지 가능함
핵심 차이
- ALTER TABLE RENAME은 단일 테이블 대상
- RENAME TABLE은 여러 테이블을 한 문장으로 변경 가능
- 스키마 간 이동 지원 current_db.table에서 other_db.table로 변경 가능
- 동일 트랜잭션처럼 동작하는 원자성 제공, 다중 변경 중 하나라도 실패 시 전체 미적용
- 권한 요구 사항 존재, 원본 테이블에 ALTER와 DROP, 대상 스키마에 CREATE 권한 필요
- 트리거와 외래키 메타데이터는 함께 유지되나, 뷰나 저장 프로시저의 하드코딩된 참조는 자동 갱신되지 않음
사용법
- 단일 테이블 이름 변경
RENAME TABLE old_table TO new_table;
- 단일 테이블 이름 변경 ALTER 사용
ALTER TABLE old_table RENAME new_table;
- 다수 테이블 이름 일괄 변경
RENAME TABLE old_table1 TO new_table1,
old_table2 TO new_table2,
old_table3 TO new_table3;
- 다른 데이터베이스로 이동 같은 서버 내
RENAME TABLE current_db.table_name TO other_db.table_name;
주의 사항
- 대상 이름이 이미 존재하면 실패
- 교차 서버 이동 불가, 같은 서버 인스턴스 내 스키마 간 이동만 가능
- 실행 시 메타데이터 락 획득, 짧은 구간 동안 읽기나 쓰기 대기 가능
- 배치 변경 전 사전 검증 권장, 이름 충돌 여부와 권한 확인
- 뷰나 프로시저 참조는 수동 점검 필요, 린트나 간단한 탐색 쿼리로 영향 범위 확인 권장
정리
단일 변경만 필요하면 ALTER로 충분하나, 다수 변경이나 스키마 이동까지 고려하면 RENAME TABLE이 더 실용적 선택 원자적 일괄 변경과 스키마 간 이동을 활용하되, 권한과 의존성 영향 검증을 선행할 것