행위

오라클 PK 생성

DB CAFE

thumb_up 추천메뉴 바로가기


1 PK 인덱스 삭제[편집]

-- 제약 조건 삭제 후 
ALTER TABLE TBA.TB_SM_XXX 
 DROP CONSTRAINT PK_SM_XXX ; 
-- PK 인덱스 삭제 
DROP INDEX TBA.PK_SM_XXX ;

or

ALTER TABLE 테이블명 
 DROP PRIMARY KEY;

1.1 인덱스와 제약조건 한번에 삭제[편집]

ALTER TABLE 테이블명 
 DROP PRIMARY KEY DROP INDEX;


1.2 제약조건만 삭제 ,인덱스 삭제 하지 않음[편집]

ALTER TABLE 테이블명 
 DROP PRIMARY KEY KEEP INDEX;






2 PK 인덱스 생성[편집]

2.1 테이블 생성 시 제약 조건 생성[편집]

SQL> CREATE TABLE TEST1( COL1 NUMBER
                       , COL2 NUMBER
                       , CONSTRAINT PK_TEST1 PRIMARY KEY(COL1)
                       );
Table created.

2.2 유니크 인덱스 생성 후 PK로 지정[편집]

2.2.1 유니크 인덱스 생성[편집]

SQL> CREATE UNIQUE INDEX PK_TEST1 ON TEST1(COL1);
Index created.

2.2.2 제약조건으로 PK 인덱스 변경[편집]

SQL> ALTER TABLE TEST1 ADD CONSTRAINTS PK_TEST1 PRIMARY KEY(COL1);

2.3 ALTER TABLE .. ADD PRIMARY KEY 명령[편집]

  • PK명은 SYS***으로 생성됨
ALTER TABLE TEST_TABLE 
        ADD PRIMARY KEY (USER_ID,,);
  1. USING INDEX 사용에 따른 인덱스 생성 여부
  2. 해당 컬럼으로 미리 만들어 둔 인덱스가 없는 경우 : CONSTRAINT 명칭과 동일한 이름으로 인덱스 자동 생성 됨
  3. 해당 컬럼으로 미리 만들어 둔 인덱스가 있는 경우 : 해당 인덱스를 이용함, 별도 인덱스 생성 안함


2.4 Non-Unique 인덱스를 Primary Key로 생성해야 하는경우[편집]

  1. 대용량의 데이터가 이미 존재해서 새로 인덱스를 만드는 것이 비효율적일 때 논리적으로 Unique하다면 이미 있는 Non-Unique 인덱스를 재활용하는것이 낫다고 판단 될때
  2. deferrable 옵션이 필요한 경우
    1. deferrable은 제약조건 수행을 데이터가 변경되는 시점이 아니라 commit 시점으로 미루는 옵션
    2. 특수한 환경에서 사용되는데 대용량 데이터를 처리하는 배치 작업에서 사용
    3. 데이터가 변경되는 건건이 제약조건을 적용하는 게 아니라 commit 단위마다 제약조건을 적용하면 성능 면에서 유리
    4. deferrable 옵션을 사용하려면 Primary Key 일지라도 Non-Unique 인덱스여야 한다