sql >> Databasteknik >  >> RDS >> Mysql

Rails validerar unika misslyckanden på samtidiga ingångar

Detta är mycket ovanligt och du har förmodligen väldigt otur att det har, det är möjligt.

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

Tänk på följande:Användare A skickar in formulär

  • Användare A skickar in formulär
  • Rails kontrollerar databasen för befintligt ID för användare A- ingen hittades
  • Användare B skickar in formuläret
  • Rails kontrollerar databasen efter befintligt ID för användare B – ingen hittades
  • Rails Sparar användare en post
  • Rails sparar användarens B-post

Allt detta måste ske inom millisekunder men det är tekniskt möjligt.

Jag skulle föreslå att du lägger till en begränsning på databasnivå (primärnyckel).



  1. Hur man kombinerar datum från ett fält med tid från ett annat fält - MS SQL Server

  2. Beställningsval baserat på anslutningsresultat (Sortera konversationer på senast skickat meddelande)

  3. MySQL SELECT inkrementräknare

  4. oracle PLSQL intervjufrågor