2008-11-20 17 views

Respuesta

7

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 
1

familiarizarse con consultar el esquema SYS:

Select * from sys.all_ind_columns where table_name=:TabName and table_owner=:TabOwner; 
Cuestiones relacionadas