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.