Junior — Middle
Ako možno vykonať dávkovú aktualizáciu údajov v tabuľke databázy?
sobes.tech AI
Odpoveď od AI
Na dávkové aktualizácie údajov v tabuľke databázy v jazyku Go sa zvyčajne používajú pripravené SQL dotazy s viacerými parametrami alebo transakcie na zvýšenie efektívnosti a atomickosti.
Príklad dávkovej aktualizácie pomocou database/sql:
import (
"database/sql"
_ "github.com/lib/pq" // ovládač pre PostgreSQL
"log"
)
func batchUpdate(db *sql.DB, updates map[int]string) error {
tx, err := db.Begin()
if err != nil {
return err
}
stmt, err := tx.Prepare("UPDATE my_table SET value = $1 WHERE id = $2")
if err != nil {
tx.Rollback()
return err
}
defer stmt.Close()
for id, val := range updates {
if _, err := stmt.Exec(val, id); err != nil {
tx.Rollback()
return err
}
}
return tx.Commit()
}
Tu:
- Vytvára sa transakcia pre skupinové vykonanie.
- Pripraví sa jeden aktualizačný dotaz.
- V cykle sa vykonávajú aktualizácie s rôznymi parametrami.
- Na konci je transakcia potvrdená.
Tento prístup je efektívnejší než vykonávanie jednotlivých dotazov bez transakcie.
Ak databáza podporuje aktualizáciu viacerých riadkov jedným dotazom (napríklad cez CASE WHEN), môže sa vytvoriť zložitý dotaz, ale to závisí od konkrétneho systému správy databáz a úlohy.