oracle pk index
오라클 9i이상
에서 인덱스는 Primary Key와 Unique
Key와는 별도로 CREATE TABLE의
USING INDEX구
안에 CREATE INDEX 문법을 이용해서 정의하는 것이 가능해 졌습니다.
오라클자바커뮤니티에서 설립한
오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝,
힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)
아마도 대부분의 사용자들은 다음과 같은 방식을 알고
계실텐데…
예제를 보시면서 어떤 것이 바뀌었는지 확인해 보도록
하죠.
SQL> create table test (
2 c1 varchar2(4) not
null,
3 c2
number(10) not null,
4
constrint pk_test primary key(c1) using index
4 );
테이블이
생성되었습니다.
위의 create table문은
pk_test라는 이름을 가지는 primary key 제약 조건을 만들며 아울러 pk_test라는 이름을 가진 인덱스를 만듭니다. 이
두가지는 user_ind_colums 뷰와
user_constraints 뷰에서 table_name = ‘TEST’라는 조건을 주시면 확인이 가능합니다.
그러나 9i이후에서는 인덱스에 대해 명시적으로 이름을 주는 것이 가능해
졌는데…
우선 아래의
예제를 참고 하도록 하죠…
SQL> create table test (
2 c1 varchar2(4) not
null,
3 c2 number(7),
4 constraint pk_test primary
key(c1)
5 using index
6 (create index idx_test_c1 on
test(c1))
7 );
테이블이
생성되었습니다.
이 경우는
테이블을 만들면서 primary key를 만드는데
(원래는 default로 pk를 만들게 되면
그 컬럼으로 유니크 인덱스를 만듭니다.) 인덱스의 이름은 primary
key 이름과 다르게 주기 위해 using index 구안에 create index문을 이용해서 인덱스를 생성했습니다.
--------------------------------------------------------------------
아래의 SQL문중 하나를 이용해 인덱스는 놔두고
PK만 삭제할 수 있습니다.
--------------------------------------------------------------------
SQL> alter table test drop primary key keep index;
테이블이
변경되었습니다.
또는
SQL> alter table test drop constraint pk_test;
테이블이
변경되었습니다.
[출처]오라클자바커뮤니티