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

Doctrine 2 @Gedmo\SoftDeleteable y campos únicos

¿Sabes lo que significa "eliminación suave"? Significa que cada operación de "eliminación" se convertirá a SQL que solo establecerá algunos deleted marca a true . Y si va a insertar otra fila con el mismo valor de campo único que tiene una fila eliminada temporalmente, recibirá este mensaje.

Tienes dos formas de resolver este problema:

  • Haga su índice único con dos columnas:su campo único original y deleted bandera. Luego obtendrá este error solo cuando intente agregar una fila con los valores de campos únicos existentes solo para no eliminarlos temporalmente.
  • Evite cometer esta infracción:debe excluir la posibilidad de agregar una fila que duplique otra en campos únicos.

El segundo es el mejor enfoque en mi humilde opinión.