Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Eindeutige Constraint-Spaltennamen aus der Oracle-Datenbank abrufen

USER_CONSTRAINTS würde auch Fremdschlüssel zurückgeben. Sie benötigen nur primäre und eindeutige Schlüssel. Aber Eindeutigkeit kann auch über einen eindeutigen Index erreicht werden. Es wird nicht in der Einschränkungsliste angezeigt. Sie müssen die Ansicht USER_INDEXES ansehen. Der gute Punkt ist, dass Primärschlüssel und eindeutige Schlüssel entsprechende eindeutige Indizes erstellen. Daher ist es notwendig und ausreichend, USER_INDEXES zu überprüfen.

UPD:siehe Lalit Kumar B Kommentar von .

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