반응형

요즘은 ORACLE 관련 글을 계속 적고 있네요.

요즘 사이트에서 사용하고 있는 DB가 ORACLE 이어서 그렇습니다. ^^

1. 오류 발생

오류가 아래와 같이 발생 하더라구요. 

SQL> drop index hr.JHIST_EMP_ID_ST_DATE_PK;
drop index hr.JHIST_EMP_ID_ST_DATE_PK
              *
ERROR at line 1:
ORA-02429: cannot drop index used for enforcement of unique/primary key

2. 오류와 관련 된 테이블 확인 하기 

SQL> column constraint_name format a30;
SQL> select constraint_name from all_constraints where index_owner = 'HR' and index_name = 'JHIST_EMP_ID_ST_DATE_PK';

CONSTRAINT_NAME
------------------------------
JHIST_EMP_ID_ST_DATE_PK

3. Drop Constraint

인덱스를 지우기 전에 Constraint를 먼저 수정 해야 합니다. 

SQL> alter table hr.job_history drop constraint JHIST_EMP_ID_ST_DATE_PK;

Table altered.

4. Drop index

이제 인데스를 지웁니다. 

SQL> drop index hr.JHIST_EMP_ID_ST_DATE_PK;

Index dropped.

오류 없이 잘 지워 집니다. 

잊어 버리지 않으려고 한글로 번역해서 ^^

감사합니다.

원본 출처 : How to Resolve ORA-02429: cannot drop index used for enforcement of unique/primary key - Ed Chen Logic

반응형
반응형

오늘은 개발하다가 Oracle 페이징을 어떻게 했지를 잃어 버려서 ^^ 최근에는 MySQL만 계속 사용해서 Limit의 편안함은 ^^ 얼마나 좋은지 모릅니다.

저는 답만 알면 되어서 일단

옛날에는 Rownum 등을 이용해서 뭔가를 많이 해줬던 것 같은데, 프로젝트에서 다른 분들이 해놓은 쿼리를 찾아 보니 ^^

OFFSET 시작카운터-1 ROW FETCH FIRST 원하는줄수 ROWS ONLY

라고 되어 있는 것을 발견 했습니다.

실제로는

OFFET 0 ROW FETCH FIRST 20 ROWS ONLY

였습니다.

그래서 저는 눈치로 필요한 쿼리를 작성 했습니다.

SELECT A,B,C,D FROM TB_TESTPAGE ORDER BY A DESC OFFSET 0 ROW FETCH FIRST 20 ROWS ONLY

처럼 작성 했습니다.

그런데, 조금 상세한 내용이 궁금해서 찾아 봤습니다.

https://programmer93.tistory.com/4

예전 방식의 쿼리 입니다.

https://action713.tistory.com/entry/Oracle-FETCH-%EA%B5%AC%EB%AC%B8-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

요즘 방식의 쿼리에 대한 설명입니다.

저는 구현만 하면 되어서 설명 보다는 어떻게 사용했는지를 적었습니다.

하지만, 다른 분들은 친절하게 설명해주셨으니 읽어 보시면 도움이 될 것 같습니다.

감사합니다.

반응형

+ Recent posts