Massenaktualisierungen mehrerer Zeilen in PostgreSQL mit Go
Bei der Arbeit mit großen Datensätzen ist es häufig erforderlich, mehrere Zeilen in einer Datenbanktabelle zu aktualisieren in einem einzigen Arbeitsgang. Dadurch kann die Leistung optimiert und die Codekomplexität verringert werden. In PostgreSQL können Massenaktualisierungen mithilfe verschiedener Ansätze erreicht werden.
Ein Ansatz besteht darin, eine abgeleitete Tabelle zu verwenden, um einen Satz von zu aktualisierenden Werten zu erstellen. Mithilfe der FROM-Klausel können Sie die Werte für jede Zeile angeben, die aktualisiert werden muss. Zum Beispiel:
UPDATE t SET column_a = v.column_a, column_b = v.column_b FROM (VALUES (1, 'FINISH', 1234), (2, 'UNFINISH', 3124) ) v(id, column_a, column_b) WHERE v.id = t.id;
Die abgeleitete Tabelle v enthält die Paare von (id, Column_a, Column_b), die die Aktualisierungen für jede Zeile darstellen. Die UPDATE-Anweisung verwendet dann die WHERE-Klausel, um die ID-Werte in v mit denen in der Zieltabelle t abzugleichen.
In Go können Sie diese Abfrage mithilfe einer vorbereiteten Anweisung ausführen:
const updateBulkSQL = ` UPDATE t SET column_a = v.column_a, column_b = v.column_b FROM (VALUES (, , ), (, , ) ) v(id, column_a, column_b) WHERE v.id = t.id; ` func main() { db, err := sql.Open("postgres", "") if err != nil { // Handle error } stmt, err := db.Prepare(updateBulkSQL) if err != nil { // Handle error } _, err = stmt.Exec(1, "FINISH", 1234, 2, "UNFINISH", 3124) if err != nil { // Handle error } }
Dieser Ansatz bietet eine präzise und effiziente Möglichkeit, Massenaktualisierungen in PostgreSQL durchzuführen, sodass Sie mehrere Zeilen in einer einzigen Abfrage aktualisieren können, ohne für jede Zeile separate Abfragen ausführen zu müssen.
Das obige ist der detaillierte Inhalt vonWie führe ich mit Go mehrzeilige Massenaktualisierungen in PostgreSQL durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!