ホームページ >バックエンド開発 >Golang >Go を使用して PostgreSQL で複数行の一括更新を実行する方法

Go を使用して PostgreSQL で複数行の一括更新を実行する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-11 06:14:10718ブラウズ

How to Perform Multi-Row Bulk Updates in PostgreSQL with Go?

Go を使用した PostgreSQL の複数行の一括更新

大規模なデータセットを扱う場合、多くの場合、データベース テーブル内の複数の行を更新する必要があります。 1 回の操作で。これにより、パフォーマンスが最適化され、コードの複雑さが軽減されます。 PostgreSQL では、さまざまなアプローチを使用して一括更新を実現できます。

1 つのアプローチには、派生テーブルを使用して更新する値のセットを構築することが含まれます。 FROM 句を利用すると、更新する必要がある各行の値を指定できます。例:

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;

派生テーブル v には、各行の更新を表す (id、column_a、column_b) のペアが含まれています。その後、UPDATE ステートメントは WHERE 句を使用して、v の ID 値をターゲット テーブル t の ID 値と照合します。

Go では、準備済みステートメントを使用してこのクエリを実行できます。

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
    }
}

このアプローチは、PostgreSQL で一括更新を実行するための簡潔かつ効率的な方法を提供し、行ごとに個別のクエリを実行することなく、単一のクエリで複数の行を更新できるようにします。行。

以上がGo を使用して PostgreSQL で複数行の一括更新を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。