블로그 이름

[ORACLE] 컬럼 데이터 타입 변경 방법 본문

개발/Database

[ORACLE] 컬럼 데이터 타입 변경 방법

Hide 2025. 3. 11. 23:48

ALTER TABLE [테이블명] MODIFY [컬럼명] [새 데이터 타입(길이)]

ALTER TABLE emp MODIFY empName VARCHAR2(4);

 

컬럼의 데이터 타입 변경 시 ORA-01439: column to be modified must be empty to change datatype 오류가 발생할 때가 있다. 

VARCHAR -> VARCHAR 타입 (길이를 변경한다던지) 할때에는 괜찮지만

VARCHAR 타입에서 CLOB 타입으로 변경하거나 할 때 발생한다. 

VARCHAR 타입과 CLOB 타입은 저장하는 공간이 다르기 때문에 발생한다고 한다.

 

이 경우 변경할 컬럼을 생성한 뒤, 값을 옮긴 뒤 값을 모두 지운 뒤 원 컬럼으로 옮기면 된다.

 

1. 새 컬럼 생성 (기존 데이터 복사)

ALTER TABLE TABLE_NAME ADD COLUMN_COPY CLOB;

 

2. 새 컬럼에 기존 데이터 복사

UPDATE TABLE_NAME SET COLUMN_COPY = COLUMN_NAME;

 

3. 기존 컬럼 삭제

ALTER TABLE TABLE_NAME DROP COLUMN COLUMN_NAME;

 

4. 새 컬럼명을 기존 컬럼명으로 변경

ALTER TABLE TABLE_NAME RENAME COLUMN COLUMN_COPY TO COLUMN_NAME;

 

데이터타입 변경할 일 없게 넉넉하게 설계해야겟다.