Как проверить индекс в Oracle

Я пишу обновление схемы script для продукта, который зависит от базы данных Oracle. В одной области мне нужно создать индекс в таблице - если этот индекс еще не существует. Есть ли простой способ проверить наличие индекса, который я знаю, имя в Oracle script?

Это было бы похоже на SQL Server: ЕСЛИ НЕ СУЩЕСТВУЕТ (ВЫБЕРИТЕ * ОТ SYSINDEXES ГДЕ ИМЯ = 'myIndex') // Затем создайте my mydedex

Ответы

Ответ 1

выберите count (*) из user_indexes, где index_name = 'myIndex'

sqlplus не будет поддерживать IF..., однако, вам придется использовать анонимные PL/SQL-блоки, что означает EXECUTE IMMEDIATE для DDL.

DECLARE
    i INTEGER;
BEGIN
    SELECT COUNT(*) INTO i FROM user_indexes WHERE index_name = 'MYINDEX';
    IF i = 0 THEN
        EXECUTE IMMEDIATE 'CREATE INDEX myIndex ...';
    END IF;
END;
/

Изменить: как указано, Oracle хранит имена без кавычек во всех заглавных букв.