Czy wiesz, co oznacza „miękkie usuwanie”? Oznacza to, że każda operacja "delete" zostanie przekonwertowana na SQL, która ustawi tylko niektóre deleted
flaga na true
. A jeśli wstawisz kolejny wiersz z tą samą wartością unikalnego pola, które ma nietrwale usunięty wiersz, otrzymasz tę wiadomość.
Masz dwa sposoby rozwiązania tego problemu:
- Utwórz swój unikalny indeks za pomocą dwóch kolumn:oryginalnego unikalnego pola i
deleted
flaga. Wtedy otrzymasz ten błąd tylko wtedy, gdy spróbujesz dodać wiersz z istniejącymi unikalnymi wartościami pól tylko dla nieusuwanych nietrwale. - Unikaj tego naruszenia:powinieneś wykluczyć możliwość dodania wiersza, który duplikuje inny w unikalnych polach.
Drugi to najlepsze podejście IMHO.