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

Oracle trova un vincolo

select * from all_constraints
where owner = '<NAME>'
and constraint_name = 'SYS_C00381400'
/

Come tutte le viste del dizionario dei dati, questa è una vista USER_CONSTRAINTS se vuoi solo controllare lo schema corrente e una vista DBA_CONSTRAINTS per gli utenti amministratori.

La costruzione del nome del vincolo indica un nome del vincolo generato dal sistema. Ad esempio, se specifichiamo NOT NULL in una dichiarazione di tabella. O addirittura una chiave primaria o univoca. Ad esempio:

SQL> create table t23 (id number not null primary key)
  2  /

Table created.

SQL> select constraint_name, constraint_type
  2  from user_constraints
  3  where table_name = 'T23'
  4  /

CONSTRAINT_NAME                C
------------------------------ -
SYS_C00935190                  C
SYS_C00935191                  P

SQL>

'C' per il controllo, 'P' per primario.

In genere è una buona idea assegnare un nome esplicito ai vincoli relazionali. Ad esempio, se il database crea un indice per la chiave primaria (cosa che farà se quella colonna non è già indicizzata), utilizzerà il nome del vincolo o denominerà l'indice. Non vuoi un database pieno di indici denominati come SYS_C00935191 .

Ad essere onesti, la maggior parte delle persone non si preoccupa di nominare i vincoli NOT NULL.