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
반응형
'공부는 평생하는 것이다 > SQLP(D)' 카테고리의 다른 글
[IT/SQL] 오라클 SELECT 동작 원리 와 순서 (0) | 2023.11.28 |
---|---|
[SQL] Default Role (0) | 2023.08.03 |
[SQLD/SQLP] 국가공인 SQL 전문가 (SQLP) 출제문항 수 (0) | 2022.11.01 |
[SQLD/SQLP] SQL 기본 (Ⅱ) (0) | 2022.10.26 |
[SQLD/SQLP] SQL 기본 (Ⅰ) (0) | 2022.10.20 |