Oracle
 sql >> Base de données >  >> RDS >> Oracle

Obtenir des noms de colonne de contrainte uniques à partir de la base de données Oracle

USER_CONSTRAINTS renverrait également des clés étrangères. Vous n'avez besoin que de clés primaires et uniques. Mais l'unicité peut également être obtenue via un index unique. Il ne sera pas affiché dans la liste des contraintes. Vous devez regarder la vue USER_INDEXES. Le bon point est que les clés primaires et uniques créent des index uniques correspondants. Il est donc nécessaire et suffisant de vérifier USER_INDEXES.

UPD :voir Lalit Kumar B le commentaire de.

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