테이블의 column을 바꾸고 싶을때가 있다.
하지만 값이 들어가 있으면.. 바뀌지지가 않는 법.
이럴땐 어떻게 해야할까?
쉽게 생각 드는게 임시 테이블을 하나 만들고 기존 테이블을 임시 테이블로 옮겨 놓은 후
기존 테이블의 컬럼을 수정 하고(다시 만들어도 되고) 임시 테이블에 넣었던 값을 다시 기존 테이블로 옮기는 것이다.
해볼까나?
상황
- DWSanction의 컬럼 중 DraftDate 컬럼을 varchar (40)에서 Date로 바꾸고 싶다. 하지만 데이터 값이 들어 있어 바꾸기가 쉽지 않다. 어떻게 해야 할까?
위의 순서대로 한번 해결해보자.
1. 임시테이블 생성
CREATE TABLE DWSanction2
AS SELECT * FROM DWSanction
2. 기존 테이블 수정
ALTER TABLE DWSanction MODIFY ( DraftDate DATE);
(난 여기서 아예 기존 테이블을 삭제하고 컬럼형을 바꾸고 다시 만들었다.)
3. 기존 테이블에 임시테이블에 넣었던 것을 다시 붓는다.
INSERT INTO DWSanction SELECT * FROM DWSanction2;
알고 있으면 유용하게 써먹을데가 있을 터. 기억해 두도록 하자.
[출처] [Oracle]테이블 바뀌치기 신공!|작성자 협객