Mysql
 sql >> Database >  >> RDS >> Mysql

@Column(unique=true) non sembra funzionare

Il unique=true elemento della Column annotazione e/o il UniqueConstraint le annotazioni che possono essere utilizzate a livello di tabella vengono utilizzate per specificare che un vincolo univoco deve essere incluso nel DDL generato .

In altre parole, non fanno nulla durante il runtime, la verifica è lasciata al database (il che ha senso in quanto l'unicità non può essere testata a livello Java in modo affidabile) e se per qualsiasi motivo non si dispone del corrispondente vincolo/i definito/i a livello di database, non accadrà nulla.

Aggiungi il vincolo manualmente:

ALTER TABLE Customer ADD CONSTRAINT customer_name_unq UNIQUE (name);

Vedi anche

A meno che tu non acquisisca un blocco tabella (ahi!), non puoi verificare l'unicità con una query SQL in un ambiente simultaneo.