반응형
Oracle - 없는 경우에만 인덱스 만들기
인덱스가 없는 경우에만 오라클에서 인덱스를 만들 수 있는 방법이 있습니까?
뭐 이런 거.
CREATE INDEX IF NOT EXISTS ord_customer_ix
ON orders (customer_id);
없는 경우에만 인덱스 추가:
declare
already_exists exception;
columns_indexed exception;
pragma exception_init( already_exists, -955 );
pragma exception_init(columns_indexed, -1408);
begin
execute immediate 'create index ord_customer_ix on orders (customer_id)';
dbms_output.put_line( 'created' );
exception
when already_exists or columns_indexed then
dbms_output.put_line( 'skipped' );
end;
없으면 ORACLE에서 인덱스를 만듭니다.
ALTER SESSION SET CURRENT_SCHEMA = PROD_INTG;
DECLARE
INDEX_EXISTS NUMBER;
BEGIN
SELECT COUNT(1)
INTO INDEX_EXISTS
FROM ALL_INDEXES AI,
ALL_IND_COLUMNS AIC
WHERE AI.TABLE_OWNER = 'PROD_INTG'
AND AI.TABLE_NAME = 'PROCESS_APPLICATION'
AND AI.INDEX_NAME = AIC.INDEX_NAME
AND AI.OWNER = AIC.INDEX_OWNER
AND AIC.COLUMN_NAME IN ('PST_CODE', 'PIZ_TYPE_ID');
IF (INDEX_EXISTS) > 0
THEN
DBMS_OUTPUT.PUT_LINE('INDEX EXISTS :');
ELSE
EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA = PROD_INTG';
EXECUTE IMMEDIATE 'CREATE INDEX PROD_INTG.IDX_IQC_APPS_IN_PROC_PST_PIZ
ON PROD_INTG.PROCESS_APPLICATION (PST_CODE, PIZ_TYPE_ID) PARALLEL 16';
EXECUTE IMMEDIATE 'ALTER INDEX PROD_INTG.IDX_IQC_APPS_IN_PROC_PST_PIZ NOPARALLEL';
DBMS_OUTPUT.PUT_LINE('INDEX created :');
END IF;
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE IN (-2275, -955, -02431, -01430, -01451, -01408)
THEN
NULL;
ELSE
RAISE;
END IF;
END;
/
스크립트를 사용하여 인덱스가 있는 경우 인덱스를 삭제한 후 생성할 수 있습니다.있는 경우 드롭을 확인하는 오류가 발생합니다.
BEGIN
EXECUTE IMMEDIATE 'DROP INDEX ord_customer_ix';
EXCEPTION
WHEN OTHERS
THEN
IF SQLCODE != -955
THEN -- ORA-00955 index does not exist
RAISE;
END IF;
END;
/
CREATE INDEX ord_customer_ix
ON orders (customer_id);
;
이것은 꽤 간단하며 코드화하고 이해하기 쉽습니다.
언급URL : https://stackoverflow.com/questions/44539663/oracle-create-an-index-only-if-not-exists
반응형
'programing' 카테고리의 다른 글
WordPress의_posts_pagation에서 페이지 번호를 자신의 div로 랩핑하려면 어떻게 해야 합니까? (0) | 2023.10.30 |
---|---|
Pandas to_sql에서 스키마 지정 (0) | 2023.10.30 |
Oracle에서 로컬 변수를 정의하는 가장 간단한 방법은 무엇입니까? (0) | 2023.10.30 |
OpenCSV: 사용자 지정 컬럼 헤더 및 사용자 지정 컬럼 위치를 사용하여 POJO에서 CSV 파일을 생성하는 방법은? (0) | 2023.10.30 |
판다에서 개체별로 한 그룹에 속한 그룹의 수를 구하는 방법은? (0) | 2023.10.30 |