Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Doctrine 2 @Gedmo\SoftDeleteable i unikalne pola

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przechowywanie mikrosekund w MySQL:jakie obejście?

  2. mySQL - Blokowanie tabel a blokowanie wierszy

  3. Scalanie doktryny:pole DateTime zawsze aktualizowane

  4. Uzyskaj zliczanie wyników zapytania poprzez getSingleScalarResult() i groupBy() - wyjątek

  5. Wyświetlaj pasek postępu, gdy skrypt php działa przez ajax