Rumah  >  Artikel  >  pangkalan data  >  Bahasa Go dan pangkalan data MySQL: bagaimana untuk melakukan transaksi data?

Bahasa Go dan pangkalan data MySQL: bagaimana untuk melakukan transaksi data?

WBOY
WBOYasal
2023-06-17 10:07:361237semak imbas

Kini aplikasi Internet perlu memproses data. Anda mungkin menghadapi situasi berikut semasa memproses data:

  1. Anda ingin memasukkan rekod, tetapi salah satu lajur tidak memenuhi keperluan, atau pangkalan data akan menjadi tidak konsisten selepas dimasukkan.
  2. Lakukan satu siri operasi jika ralat berlaku pada salah satu daripadanya, semua operasi sebelumnya perlu digulung semula.
  3. Berbilang pengguna melakukan operasi yang sama pada masa yang sama Tanpa kawalan, bacaan kotor dan bacaan tidak boleh diulang akan berlaku.

Pada masa ini kami perlu melakukan pemprosesan transaksi untuk memastikan pangkalan data dapat mengekalkan integriti dan konsistensi data. Mari kita lihat cara melakukan pemprosesan transaksi pada pangkalan data MySQL dalam bahasa Go.

  1. Sambung ke pangkalan data

Apabila menggunakan bahasa Go untuk pemprosesan transaksi pangkalan data MySQL, anda perlu mewujudkan sambungan dengan pangkalan data MySQL terlebih dahulu. Kita boleh menggunakan pakej "database/sql" untuk menyambung Kod khusus adalah seperti berikut:

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

Antaranya, "root" mewakili nama pengguna MySQL, "kata laluan" mewakili kata laluan MySQL, dan "127.0". .0.1:3306" ialah Alamat IP dan nombor port MySQL, dan "database_name" ialah nama pangkalan data yang disambungkan.

  1. Mulakan transaksi

Selepas melengkapkan sambungan pangkalan data melalui kod di atas, kita perlu memulakan transaksi baharu. Untuk memulakan urus niaga baharu, kami boleh menggunakan kaedah db.Begin(), seperti berikut:

tx, err := db.Begin()
if err != nil {
    fmt.Println("开始事务错误: ", err)
}

Kod ini akan mengembalikan objek transaksi jenis Tx, yang boleh kami gunakan untuk melaksanakan operasi rollback.

  1. Melaksanakan penyataan SQL

Apabila kita perlu melaksanakan operasi SQL yang berkesan, kita boleh melaksanakan penyataan SQL yang sepadan melalui kaedah tx.Exec(), seperti yang ditunjukkan di bawah:

result, err := tx.Exec("INSERT INTO users (name, age, sex) values (?, ?, ?)", "张三", 18, "男")
if err != nil {
    fmt.Println("插入错误: ", err)
    tx.Rollback()
}

Antaranya,? Ia adalah pemegang tempat dan akan digantikan dengan nilai semasa pelaksanaan tertentu. Maklumat seperti bilangan baris yang terjejas oleh operasi dan ID auto-increment boleh diperolehi melalui objek hasil yang dikembalikan oleh kaedah tx.Exec().

  1. Komit urus niaga

Mengikut kod di atas, kami melakukan pengendalian ralat semasa melaksanakan pernyataan SQL Jika ralat berlaku, urus niaga perlu dibatalkan. Selepas operasi transaksi selesai, kami perlu menyerahkan transaksi melalui kaedah tx.Commit(), seperti yang ditunjukkan di bawah:

if err := tx.Commit(); err != nil {
    fmt.Println("提交事务错误: ", err)
    tx.Rollback()
}

Apabila menyerahkan transaksi melalui kaedah tx.Commit(), jika penyerahan gagal , operasi rollback diperlukan untuk mengekalkan integriti dan konsistensi Data.

  1. Ringkasan

Melalui langkah di atas, kita boleh membuat kesimpulan bahawa menggunakan bahasa Go untuk pemprosesan transaksi pangkalan data MySQL. Antaranya, operasi seperti mewujudkan sambungan dengan MySQL, memulakan transaksi, melaksanakan pernyataan SQL, dan menyerahkan transaksi diperlukan untuk memastikan integriti dan konsistensi data.

Di atas ialah artikel tentang pemprosesan transaksi data antara bahasa Go dan pangkalan data MySQL, menunjukkan langkah dan kaedah utama. Saya harap artikel ini dapat membantu anda dalam pemprosesan transaksi pangkalan data MySQL dalam bahasa Go.

Atas ialah kandungan terperinci Bahasa Go dan pangkalan data MySQL: bagaimana untuk melakukan transaksi data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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