Mysql
 sql >> Base de données >  >> RDS >> Mysql

Doctrine 2 @Gedmo\SoftDeleteable et champs uniques

Savez-vous ce que signifie "suppression logicielle" ? Cela signifie que chaque opération "supprimer" sera convertie en SQL qui ne définit que certains deleted indicateur à true . Et si vous insérez une autre ligne avec la même valeur de champ unique qui a une ligne supprimée en douceur, vous obtiendrez ce message.

Vous avez deux façons de résoudre ce problème :

  • Créez votre index unique avec deux colonnes :votre champ unique d'origine et deleted drapeau. Ensuite, vous obtiendrez cette erreur uniquement lorsque vous essayez d'ajouter une ligne avec les valeurs de champs uniques existantes uniquement pour les suppressions non réversibles.
  • Évitez de commettre cette infraction :vous devez exclure la possibilité d'ajouter une ligne qui en duplique une autre dans des champs uniques.

La seconde est la meilleure approche à mon humble avis.