본문 바로가기
개발 이야기/RDBMS

Oracle_Column type 변경 시, 이미 데이터가 있을 때 어떻게?

by 농개 2018. 5. 25.
반응형

TBLSTUDENT 테이블의 SCORE를 varchar2(기존)에서 number(최신)으로 바꾸려고 할때, 

이미 데이터가 있는 경우 변경이 불가능하다. 이때 꼼수로 아래와 같이 변경이 가능하다.


1
2
3
4
5
6
ALTER TABLE TBLSTUDENT ADD( SCORE_TEMP NUMBER(10,1)); -- 임시 컬럼 추가 (NUMBER(10,1)타입은 숫자형 소수점 1자리 허용)
UPDATE TBLSTUDENT SET SCORE_TEMP = SCORE ;            -- 임시 컬럼에 기존 값들 복사
ALTER TABLE TBLSTUDENT DROP(SCORE);                   -- 기존 컬럼 삭제
ALTER TABLE TBLSTUDENT RENAME COLUMN SCORE_TEMP TO SCORE; -- 임시컬럼 이름 변경
COMMENT ON COLUMN TBLSTUDENT.SCORE IS '점수';         -- 코멘트 추가
 
cs


실DB 변경 작업이라면... 중요한만큼 신중에 신중을 가해서 작업하자.

반응형