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

Railsy weryfikują unikalność niepowodzeń na współbieżnych wejściach

Jest to bardzo rzadkie i prawdopodobnie masz pecha, że ​​tak się stało, jest to możliwe.

Przeczytaj:https://github.com/rails/rails/blob/master/activerecord/lib/active_record/validations/uniqueness.rb#L165

Rozważ następujące kwestie:Użytkownik A przesyła formularz

  • Użytkownik A przesyła formularz
  • Rails sprawdza bazę danych pod kątem istniejącego identyfikatora dla użytkownika A – nie znaleziono
  • Użytkownik B przesyła formularz
  • Rails sprawdza bazę danych pod kątem istniejącego identyfikatora użytkownika B – nie znaleziono
  • Rails zapisuje rekord użytkownika A
  • Rails zapisuje rekord użytkownika B

Wszystko to musi nastąpić w ciągu milisekund, ale jest to technicznie możliwe.

Sugeruję dodanie ograniczenia na poziomie bazy danych (klucz podstawowy).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sequelize — użyj znacznika czasu UNIX dla pól DATE

  2. Wybierz 10 najlepszych rekordów dla każdej kategorii w MySQL

  3. PHP nie może połączyć się z mysql przez Pythona

  4. Gdzie przechowywać przesłane pliki (dźwięk, zdjęcia i wideo)

  5. PDO pobiera jedną kolumnę z tabeli do 1-wymiarowej tablicy