Oracle
 sql >> Database >  >> RDS >> Oracle

Ottenere nomi di colonne di vincoli univoci dal database Oracle

USER_CONSTRAINTS restituirebbe anche chiavi esterne. Hai bisogno solo di chiavi primarie e univoche. Ma l'unicità può essere raggiunta anche tramite un indice univoco. Non verrà mostrato nell'elenco dei vincoli. Devi guardare la vista USER_INDEXES. Il punto positivo è che le chiavi primarie e univoche creano indici univoci corrispondenti. Quindi, è necessario e sufficiente controllare USER_INDEXES.

UPD:vedi Lalit Kumar B commento di.

select c.COLUMN_NAME
from USER_INDEXES i, USER_IND_COLUMNS c
where i.TABLE_NAME = 'YOUR_TABLE'
  and i.UNIQUENESS = 'UNIQUE'
  and i.TABLE_NAME = c.TABLE_NAME
  and i.INDEX_NAME = c.INDEX_NAME
union
select cc.COLUMN_NAME
from USER_CONSTRAINTS con, USER_CONS_COLUMNS cc
where con.TABLE_NAME = 'YOUR_TABLE'
  and con.CONSTRAINT_TYPE in ( 'U', 'P' )
  and con.TABLE_NAME = cc.TABLE_NAME
  and con.CONSTRAINT_NAME = cc.CONSTRAINT_NAME