오라클  12c에는 컬럼을 보이지 않도록하는 invisible 기능이 있다.


ALTER TABLE 테이블명 MODIFY 컬럼명 INVISIBLE;


을 실행하면 해당컬럼은 마치 없는것처럼 테이블 DESCRIPTION에서 사라진다. 


용도는 뭘까? 




주된 용도인지는 모르겠으나 활용방법의 하나로 

테이블 컬럼 순서 조정이 가능하다. 


원래 오라클의 테이블 컬럼 순서를 조정하려면 DROP & CREATE 밖엔 방법이 없었으나 

12c 버전부터는 INVISIBLE, VISIBLE 기능을 이용하여 테이블 DROP 없이 컬럼 순서 조정을 할 수 있다.


ALTER TABLE 테이블명 MODIFY 컬럼명 INVISIBLE;

ALTER TABLE 테이블명 MODIFY 컬럼명 VISIBLE;


하면 '컬럼명' 컬럼은 맨 끝에 붙게 된다. 


중간에 위치한 컬럼도 INVISIBLE, VISIBLE 하면 맨 끝으로 컬럼 순서가 바뀐다. 


PK를 제외한 모든 컬럼을 INVISIBLE로 하고 

원하는 컬럼 순서대로 VISIBLE 하면 컬럼순서 조정은 끝.


아래 SQL을 약간 수정하여 활용하면 편리하게 INVISIBLE, VISIBLE  스크립트를 뽑을 수 있다. 

DBA권한이 없는 사용자는 DBA_TAB_COLUMNS 대신 USER_TAB_COLUMNS 로 ...



SELECT SQL

FROM (

SELECT TABLE_NAME, 1 NO, COLUMN_ID,  'ALTER TABLE '|| OWNER ||'.'|| TABLE_NAME||' MODIFY '|| COLUMN_NAME ||'  INVISIBLE ;' SQL

FROM DBA_TAB_COLUMNS

WHERE TABLE_NAME = '테이블명'

UNION ALL

SELECT TABLE_NAME, 1 NO, COLUMN_ID,  'ALTER TABLE '|| OWNER ||'.'|| TABLE_NAME||' MODIFY '|| COLUMN_NAME ||'  VISIBLE ;' SQL

FROM DBA_TAB_COLUMNS

WHERE TABLE_NAME = '테이블명'

)

WHERE TABLE_NAME  = '테이블명'

ORDER BY NO,COLUMN_ID, SQL


+ Recent posts