Davide Gammone
Come eliminare tutti gli indici su una tabella Oracle SQL

Un po' di tempo fa avevo bisogno di cancellare tutti gli Indici su una tabella Oracle. Dopo alcune prove, ho creato il seguente codice PL/SQL:

BEGIN
    FOR ind IN 
    (
        SELECT index_name
        FROM user_indexes
        WHERE table_name = 'nome_tabella'
        AND index_name NOT IN
       (
            SELECT unique index_name
            FROM user_constraints
            WHERE table_name = 'nome_tabella'
            AND index_name IS NOT NULL
       )
    )
    LOOP
        execute immediate 'DROP INDEX '||ind.index_name;
    END LOOP;
END;

Lo script elimina tutti gli indici che non sono referenziati dai vincoli della tabella. Ciò è importante, perché se la tabella ha un vincolo creato usando l'indice specificato, l'istruzione drop fallirà. Se si desidera utilizzare lo script, è sufficiente sostituire la stringa "nome_tabella" con il nome della tabella appropriata.

Questo sito utilizza cookie, anche di terze parti, per offrirti servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all'uso dei cookie. Se vuoi saperne di più o negare il consenso a tutti o ad alcuni cookie, clicca qui.