2013년 7월 30일 화요일

[오라클강의,자바강의,오라클자바교육,오라클교육,자바교육,자바오라클]Oracle Explicitly Named Indexes(9i이상)

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;

테이블이 변경되었습니다.

[출처]오라클자바커뮤니티



댓글 없음:

댓글 쓰기