2017-10-30 2 views
1

ich Fehler bekommen ORA-01450: maximale Schlüssellänge (6398) überschritten wie ich versuche unter Index erstellenOracle Index maximale Schlüssellänge überschritten

CREATE INDEX FORENAME_SURNAME ON CARD_HOLDER(REGEXP_REPLACE (UPPER(FORENAME),'\\s|-|_|\\.|\\:|\\,',''), REGEXP_REPLACE (UPPER(SURNAME),'\\s|-|_|\\.|\\:|\\,','')); 

Fehlercode ist fair klar, aber meine Spalten sind 100Bytes jeweils so Wie ist möglich, Index übertreffen die max?

Und db_block_size = 8192 nicht 6398.

Below Spalten Definition

CREATE TABLE CARD_HOLDER 
( "CARD_HOLDER_ID" NUMBER NOT NULL ENABLE, 
"TITLE" VARCHAR2(10 BYTE), 
"FORENAME" VARCHAR2(100 BYTE), 
"SURNAME" VARCHAR2(100 BYTE) NOT NULL ENABLE, 
) 

Antwort

0

können Sie versuchen, diese anstelle von zwei verschiedenen Spalten mit Verkettung verwenden. Dies ist jedoch nur eine Problemumgehung und möglicherweise nicht nützlich, es sei denn, Sie verwenden die Abfrage als solche mit Verkettung.

CREATE INDEX forename_surname ON 
    card_holder (regexp_replace(upper(forename),'\\s|-|_|\\.|\\:|\\,','') 
    || regexp_replace(upper(surname),'\\s|-|_|\\.|\\:|\\,','')); 
Verwandte Themen