Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Melakukan Kemas Kini Pukal dalam PostgreSQL dengan Go?

Bagaimana untuk Melakukan Kemas Kini Pukal dalam PostgreSQL dengan Go?

Susan Sarandon
Lepaskan: 2024-12-13 11:32:11
asal
407 orang telah melayarinya

How to Perform Bulk Updates in PostgreSQL with Go?

Kemas Kini Pukal Berbilang Baris dalam Satu Pertanyaan menggunakan PostgreSQL

Soalan:

Bagaimana boleh berbilang baris dikemas kini secara serentak menggunakan satu pernyataan SQL dalam PostgreSQL dan Pergi?

Jawapan:

Untuk mencapai kemas kini pukal dalam PostgreSQL menggunakan satu pertanyaan, adalah disyorkan untuk menggunakan jadual terbitan. Contoh berikut menunjukkan cara mengemas kini berbilang baris menggunakan jadual terbitan:

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;
Salin selepas log masuk

Pelaksanaan Go:

Kod Go berikut menunjukkan melaksanakan pertanyaan kemas kini pukal:

import (
    "context"
    "database/sql"
    "fmt"

    _ "github.com/lib/pq" // PostgreSQL driver
)

func main() {
    // Open a database connection
    db, err := sql.Open("postgres", "user=postgres password=mypassword host=localhost port=5432 database=mydatabase")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // Create the derived table
    derivedTableQuery := `
CREATE TEMP TABLE BulkUpdate AS
SELECT 1 AS id, 'FINISH' AS column_a, 1234 AS column_b
UNION ALL
SELECT 2, 'UNFINISH', 3124
`
    if _, err := db.Exec(derivedTableQuery); err != nil {
        panic(err)
    }

    // Execute the bulk update query
    bulkUpdateQuery := `
UPDATE t
SET column_a = v.column_a,
    column_b = v.column_b
FROM BulkUpdate v
WHERE v.id = t.id
`

    // Create a context for the query execution
    ctx := context.Background()

    // Execute the bulk update query
    result, err := db.ExecContext(ctx, bulkUpdateQuery)
    if err != nil {
        panic(err)
    }

    // Retrieve the number of rows affected
    rowsAffected, err := result.RowsAffected()
    if err != nil {
        panic(err)
    }

    // Print the number of rows affected
    fmt.Printf("%d rows updated\n", rowsAffected)
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Kemas Kini Pukal dalam PostgreSQL dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan