sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan gør du ActiveRecord ThreadSafe

I modsætning til kommentarerne er samtidige indsættelser på samme tabel fuldstændigt tilladte i PostgreSQL, så der er en racebetingelse her.

For at gøre dette sikkert skal du have en unique begrænsning (eller primary key ) på column_name . Duplikerede indsættelser vil derefter kaste en undtagelse, som du kan fange og prøve igen med en opdatering.

Hvis du ikke har en unik begrænsning, skal du LOCK TABLE ... IN EXCLUSIVE MODE for at forhindre samtidige opkast. Eller brug en af ​​de samtidighedssikre metoder, der er beskrevet i:

Hvordan UPSERT (FLETT, INDSÆT ... PÅ DUPLIKAT OPDATERING) i PostgreSQL?



  1. PostgreSQL returnerer den nøjagtige eller nærmeste dato til den forespurgte dato

  2. Oracle:Aritmetisk operation resulterede i et overløb

  3. Kopiering af SSIS-pakker implementeret på SQL Server tilbage til Visual Studio 2008

  4. Vælg kolonneværdi, hvis ikke null, ellers brug en anden kolonneværdi