Sobes.tech
Junior — Middle

Kuidas teha andmebaasitabelis partiiline andmete uuendamine?

sobes.tech AI

Vastus AI-lt

Go keeles andmebaasi tabeli andmete partii uuendamiseks kasutatakse tavaliselt ettevalmistatud SQL-päringuid mitme parameetriga või tehinguid tõhususe ja atomilisuse parandamiseks.

Näide partii uuendamisest kasutades database/sql:

import (
    "database/sql"
    _ "github.com/lib/pq" // PostgreSQL draiver
    "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()
}

Siin:

  • Loob grupitöö teostamiseks tehingu.
  • Valmistab ette ühe uuendamise päringu.
  • Tsüklis tehakse uuendusi erinevate parameetritega.
  • Lõpuks kinnitatakse tehing.

See lähenemine on tõhusam kui eraldi päringute täitmine ilma tehinguta.

Kui andmebaas toetab mitme rea uuendamist ühe päringuga (näiteks kasutades CASE WHEN), saab koostada keeruka päringu, kuid see sõltub konkreetse andmebaasisüsteemi ja ülesande nõuetest.