Mysql
 sql >> Datenbank >  >> RDS >> Mysql

@Column(unique=true) scheint nicht zu funktionieren

Der unique=true Element der Column Annotation und / oder die UniqueConstraint Anmerkungen, die auf Tabellenebene verwendet werden können, werden verwendet, um anzugeben, dass eine eindeutige Einschränkung in die generierte DDL aufgenommen werden soll .

Mit anderen Worten, sie tun während der Laufzeit nichts, die Überprüfung wird der Datenbank überlassen (was sinnvoll ist, da Eindeutigkeit nicht zuverlässig auf Java-Ebene getestet werden kann) und wenn Sie aus irgendeinem Grund die entsprechende nicht haben Einschränkung(en) auf Datenbankebene definiert, wird nichts passieren.

Fügen Sie die Einschränkung manuell hinzu:

ALTER TABLE Customer ADD CONSTRAINT customer_name_unq UNIQUE (name);

Siehe auch

Solange Sie keine Tabellensperre erwerben (autsch!), können Sie in einer gleichzeitigen Umgebung nicht mit einer SQL-Abfrage auf Eindeutigkeit prüfen.