Go 言語と MySQL データベース: データ トランザクションを実行するにはどうすればよいですか?

WBOY
リリース: 2023-06-17 10:07:36
オリジナル
1286 人が閲覧しました

現在、インターネット アプリケーションはデータを処理する必要があります。データを処理するときに、次のような状況が発生することがあります。

  1. レコードを挿入したいのですが、列の 1 つが要件を満たしていないか、挿入によってデータベースの不整合が発生します。
  2. 一連の操作を実行します。いずれかの操作でエラーが発生した場合は、それまでの操作をすべてロールバックする必要があります。
  3. 複数のユーザーが同じ操作を同時に実行すると、制御が行われないと、ダーティ リードや反復不可能な読み取りが発生する傾向があります。

現時点では、データベースがデータの整合性と一貫性を維持できるようにトランザクション処理を実行する必要があります。 Go 言語で MySQL データベースのトランザクション処理を実行する方法を見てみましょう。

  1. データベースへの接続

MySQL データベースのトランザクション処理に Go 言語を使用する場合は、まず MySQL データベースとの接続を確立する必要があります。 "database/sql" パッケージを使用して接続できます。具体的なコードは次のとおりです:

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/database_name")
    if err != nil {
        fmt.Printf("连接数据库错误: ", err)
    }
    defer db.Close()
}
ログイン後にコピー

このうち、"root" は MySQL のユーザー名、"password" は MySQL のパスワード、"127.0" は MySQL のユーザー名を表します。 .0.1:3306」は MySQL の IP アドレスとポート番号、「database_name」は接続されているデータベースの名前です。

  1. トランザクションの開始

上記のコードによるデータベース接続が完了したら、新しいトランザクションを開始する必要があります。新しいトランザクションを開始するには、次のように db.Begin() メソッドを使用します。

tx, err := db.Begin()
if err != nil {
    fmt.Println("开始事务错误: ", err)
}
ログイン後にコピー

このコードは、ロールバック操作の実行に使用できる Tx タイプのトランザクション オブジェクトを返します。

  1. SQL ステートメントの実行

有効な SQL 操作を実行する必要がある場合は、以下に示すように、tx.Exec() メソッドを通じて対応する SQL ステートメントを実行できます。

result, err := tx.Exec("INSERT INTO users (name, age, sex) values (?, ?, ?)", "张三", 18, "男")
if err != nil {
    fmt.Println("插入错误: ", err)
    tx.Rollback()
}
ログイン後にコピー

その中には?これはプレースホルダーであり、特定の実行中に値に置き換えられます。操作によって影響を受ける行数や自動インクリメントされる ID などの情報は、tx.Exec() メソッドによって返される結果オブジェクトを通じて取得できます。

  1. トランザクションのコミット

上記のコードではSQL実行時にエラー処理を行っており、エラーが発生した場合はトランザクションをロールバックする必要があります。トランザクション操作が完了したら、以下に示すように、tx.Commit() メソッドを通じてトランザクションを送信する必要があります。

if err := tx.Commit(); err != nil {
    fmt.Println("提交事务错误: ", err)
    tx.Rollback()
}
ログイン後にコピー

tx.Commit() メソッドを通じてトランザクションを送信するときに、送信が失敗した場合、データの整合性と一貫性を維持するには、ロールバック操作が必要です。

  1. 概要

上記の手順により、MySQL データベースのトランザクション処理には Go 言語が使用されていると結論付けることができます。このうち、MySQL との接続の確立、トランザクションの開始、SQL ステートメントの実行、トランザクションの送信などの操作は、データの整合性と一貫性を確保するために必要です。

上記は Go 言語と MySQL データベース間のデータ トランザクション処理に関する記事であり、主な手順と方法を示しています。この記事がGo言語によるMySQLデータベースのトランザクション処理の一助になれば幸いです。

以上がGo 言語と MySQL データベース: データ トランザクションを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート