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

WBOY
Lepaskan: 2023-06-17 10:07:36
asal
1286 orang telah melayarinya

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()
}
Salin selepas log masuk

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

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()
}
Salin selepas log masuk

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()
}
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan