sql >> Base de Datos >  >> RDS >> Mysql

@Column(unique=true) no parece funcionar

El unique=true elemento de la Column anotación y/o la UniqueConstraint Las anotaciones que se pueden usar en el nivel de la tabla se usan para especificar que una restricción única debe incluirse en el DDL generado .

En otras palabras, no hacen nada durante el tiempo de ejecución, la verificación se deja a la base de datos (lo cual tiene sentido ya que la unicidad no se puede probar a nivel de Java de manera confiable) y si por alguna razón no tiene el correspondiente restricción(es) definida(s) en el nivel de la base de datos, no pasará nada.

Agregue la restricción manualmente:

ALTER TABLE Customer ADD CONSTRAINT customer_name_unq UNIQUE (name);

Véase también

  • Especificación JPA 1.0
    • 9.1.4 Anotación de restricción única
    • 9.1.5 Anotación de columna
  • Documentación de MySQL

A menos que adquiera un bloqueo de tabla (¡ay!), no puede verificar la unicidad con una consulta SQL en un entorno concurrente.