PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Aktualisieren Sie mehrere Datensätze in einer ActiveRecord-Transaktion in Rails

Angenommen, Sie wüssten, dass Sie die Dinge mit den IDs 1, 2 und 3 so einstellen wollten, dass sie Punktzahlen, 2, 8 und 64 haben (im Gegensatz zu nur Zufallszahlen), könnten Sie:

UPDATE 
  things AS t
SET
  score = c.score
FROM 
  (values
    (1, 2),
    (2, 30),
    (4, 50)
  ) as c(id, score) 
 where c.id = t.id;

Bei Rails würden Sie also ActiveRecord::Base.connection#execute verwenden um einen ähnlichen Block wie oben auszuführen, aber mit der korrekten interpolierten Wertzeichenfolge.