Как найти все функциональные индексы на столбце в Oracle - PullRequest
5 голосов
/ 15 декабря 2009

Скажем, у меня есть программа, которая ищет в базе данных столбцы для изменения в рамках процесса преобразования базы данных.

Если я пытаюсь изменить столбец с определенным функциональным индексом, выдается следующая ошибка:

ORA-30556: functional index is defined on the column to be modified

При поиске кода ORA решение состоит в том, чтобы «отбросить функциональный индекс перед попыткой изменить столбец».

Отлично! Итак, как мне найти все функциональные индексы в этом столбце?

Представление user_ind_columns выглядит хорошим началом, но в функциональных индексах есть такие вещи, как "SYS_NC00042 $" в столбце COLUMN. Оглядываясь на другие user_ виды, я не вижу ничего очевидного. Я что-то упустил?

Или я все делаю неправильно?

Ответы [ 2 ]

11 голосов
/ 15 декабря 2009

Таблица user_ind_expressions описывает выражения индексов на основе функций.

Ссылка на Oracle 11.2

6 голосов
/ 05 мая 2011

Посмотрите на INDEX_TYPE столбец USER_INDEXES:

select table_name, index_name, index_type
from user_indexes
where index_type like 'FUNCTION%'
order by table_name, index_name

TABLE_NAME                      INDEX_NAME                      INDEX_TYPE                 
------------------------------  ------------------------------  ---------------------------
SOME_TABLE                      SOME_TABLE_FUNC_INDEX           FUNCTION-BASED NORMAL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...