Sobes.tech
Junior — Middle

Kā veikt masveida datu atjaunināšanu datu bāzes tabulā?

sobes.tech AI

Atbilde no AI

Lai datu bāzes tabulas datu partiju atjaunināšanai Go valodā parasti izmanto sagatavotas SQL vaicājumus ar vairākiem parametriem vai transakcijas, lai uzlabotu efektivitāti un atomaritāti.

Piemērs par datu partiju atjaunināšanu, izmantojot database/sql:

import (
    "database/sql"
    _ "github.com/lib/pq" // PostgreSQL vadītājs
    "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()
}

Šeit:

  • Tiek izveidota transakcija grupētas izpildes nodrošināšanai.
  • Tiek sagatavots viens atjauninājuma vaicājums.
  • Ciklā tiek veikti atjauninājumi ar dažādiem parametriem.
  • Beigās transakcija tiek apstiprināta.

Šī pieeja ir efektīvāka nekā atsevišķu vaicājumu izpilde bez transakcijas.

Ja datu bāze atbalsta vairāku rindu atjaunināšanu ar vienu vaicājumu (piemēram, izmantojot CASE WHEN), var izveidot sarežģītu vaicājumu, bet tas ir atkarīgs no konkrētās datu bāzes sistēmas un uzdevuma.