Puede consultar DBA_/ALL_/USER_IND_COLUMNS
, es decir
SQL> SELECT index_name
2 FROM dba_ind_columns
3 WHERE table_owner = 'SCOTT'
4 AND table_name = 'EMP'
5 AND column_name = 'EMPNO';
INDEX_NAME
------------------------------
PK_EMP
Por supuesto, usted puede desear ampliar la consulta un poco. Esto recogerá cualquier índice en el que aparezca la columna EMPNO. Es posible que desee limitarse a los índices donde la columna es la columna principal del índice (COLUMN_POSITION
= 1). O bien, puede limitarse a los índices solo en esa columna en particular (para que no haya ninguna columna en COLUMN_POSITION
2), es decir,
SQL> ed
Wrote file afiedt.buf
1 SELECT index_name
2 FROM dba_ind_columns a
3 WHERE table_owner = 'SCOTT'
4 AND table_name = 'EMP'
5 AND column_name = 'EMPNO'
6 AND column_position = 1
7 AND NOT EXISTS(SELECT 1
8 FROM dba_ind_columns b
9 WHERE a.index_owner = b.index_owner
10 AND a.index_name = b.index_name
11* AND b.column_position = 2)
SQL>/
INDEX_NAME
------------------------------
PK_EMP