본문 바로가기
공부는 평생하는 것이다/SQLP(D)

[IT/SQL] PK 삭제하고 재 생성하기

by IT Daily Life 2022. 12. 16.
728x90
반응형

일을 하다 보면 어쩌다 가끔 사용하는 명령어나 함수는 사용을 해야 할 때 기억이 잘 나지 않는다.
PK를 삭제하고 재생성하는 경우는 좀처럼 자주 하는 일은 아니다.
그러나 주기적으로 파티션을 삭제하거나 또는 파티션을 추가하려고 할 때 PK가 로컬 인덱스가 아닌 글로벌 인덱스로 생성되어 있는 것을 발견한다.
이때 아래 명령어를 사용하면 참 좋다.
 

-- PK 재생성 구분
ALTER TABLE [TABLE명] DROP PRIMARY KEY; -- 기본키를 지워준다. 
DROP INDEX [INDEX명] ON [TABLE명];  -- INDEX를 삭제한다. 기본키를 지우지 않은 상태에서 DROP INDEX 하면 INDEX가 삭제되지 않는다.
CREATE INDEX [INDEX명] ON [TABLE명] ([COLUMN1],[COLUMN2],[...]);  -- INDEX를 생성한다.
ALTER TABLE [TABLE명] ADD CONSTRAINT [INDEX명] PRIMARY KEY ([COLUMN1],[COLUMN2],[...]); -- PK를 생성한다.

 

-- PK 재생성 예제
ALTER TABLE [TBL01] DROP PRIMARY KEY; -- 기본키를 지워준다. 
DROP INDEX [TBL01_PK] ON [TBL01];  -- INDEX를 삭제한다. 기본키를 지우지 않은 상태에서 DROP INDEX 하면 INDEX가 삭제되지 않는다.
CREATE INDEX [TBL01_PK] ON [TBL01] ([COLUMN1],[COLUMN2],[...]) LOCAL;  -- INDEX를 생성한다.
ALTER TABLE [TBL01] ADD CONSTRAINT [TBL01_PK] PRIMARY KEY ([COLUMN1],[COLUMN2],[...]) USING INDEX; -- PK를 생성한다.

 
 
PK를 재생성할 때는 데이터 INSERT가 발생하지 않는 것이 좋다.
PK가 삭제되었을 때 중복된 데이터가 INSERT 되면 중복된 데이터로 인해서 PK를 생성하지 못한다.

728x90
반응형