2013. 9. 5.

DB2] Alter table ... drop column

보통 DB에서 alter table  작업은 다음과 같이 한다.

alter table table_name 
drop column column 
;

위의 문장은 table_name 의 column 컬럼을 제거하겠다는 명령이다. 

하지만 db2에서 위 명령을 실행한 후, 

select * from table_name; 

명령을 실행하면 

SQL0668N Operation not allowed for reason code "7"

과 같은 오류를 발생시키면서 select 쿼리를 실행하지 못한다. 


이런 경우, 

reorg table table_name ;

을 실행하면 위의 오류가 해결 된다.

***
column 추가
==>
    alter table table_name
        add column column_name data_type ;


column 명 변경
==>
    alter table table_name
        alter column column_name_org
              set default 'modified_column_name' ;

pk 삭제
==>
    alter table table_name
        drop primary key

pk 추가
==>
    alter table table_name
        add primary key field_name

column 의 data type 변경
==>
   alter table table_name
         alter column column_name
             set data type 변경할 데이터 타입.


=========================================

pk 변경하기 위한 작업절차


-- pk 에 추가할 컬럼 생성. (pk 이기 때문에 not null 로 생성해야 됨)
alter table <테이블명>
    add column <컬럼명> <데이터타입> not null default 1
;

-- 테이블 데이터 확인.
select *
from <테이블명>
;

commit;

-- reorg 작업.
reorg table <테이블명> ;

-- pk 제거
ALTER TABLE <테이블명>
  drop PRIMARY KEY
;

-- pk 재생성
ALTER TABLE <테이블명>
  ADD PRIMARY KEY
    (pk 컬럼1, pk 컬럼2, ... , pk 컬럼N  )
;



CREATE SEQUENCE <Sequence명>
  AS INTEGER
  START WITH 1
  CACHE 20
  ORDER
;


---- 
sequence 삭제
drop SEQUENCE <Sequence명>

댓글 없음:

댓글 쓰기