Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die Rails-Validierung der Eindeutigkeit schlägt bei gleichzeitigen Eingaben fehl

Dies ist sehr ungewöhnlich und Sie haben wahrscheinlich sehr viel Pech, es ist möglich.

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

Beachten Sie Folgendes:Benutzer A sendet Formular

  • Benutzer A sendet Formular
  • Rails überprüft die Datenbank auf vorhandene ID für Benutzer A – keine gefunden
  • Benutzer B sendet Formular
  • Rails überprüft die Datenbank auf vorhandene ID für Benutzer B - keine gefunden
  • Rails speichert Benutzer-A-Eintrag
  • Rails speichert Benutzer-B-Eintrag

All dies muss innerhalb von Millisekunden geschehen, ist aber technisch möglich.

Ich würde vorschlagen, eine Einschränkung auf Datenbankebene (Primärschlüssel) hinzuzufügen.