Знаете ли какво означава "soft delete"? Това означава, че всяка операция "изтриване" ще бъде преобразувана в SQL, който задава само някои deleted
флаг на true
. И ако вмъкнете друг ред със същата стойност на уникално поле, което има меко изтрит ред, ще получите това съобщение.
Имате два начина да разрешите този проблем:
- Направете своя уникален индекс с две колони:вашето оригинално уникално поле и
deleted
знаме. След това ще получите тази грешка само когато се опитате да добавите ред със съществуващите уникални стойности на полета само за неизтрито меко. - Избягвайте да правите това нарушение:трябва да изключите възможността за добавяне на ред, който дублира друг в уникални полета.
Вторият е най-добрият подход IMHO.