Rumah  >  Artikel  >  pangkalan data  >  Cara mengendalikan transaksi dalam aplikasi MySQL yang ditulis dalam bahasa Go

Cara mengendalikan transaksi dalam aplikasi MySQL yang ditulis dalam bahasa Go

WBOY
WBOYasal
2023-06-17 11:55:07938semak imbas

Menulis aplikasi MySQL dalam bahasa Go ialah tugas biasa kerana bahasa Go mempunyai set pemacu MySQL yang berkuasa yang membolehkan pembangun mengendalikan operasi pangkalan data seperti pertanyaan, kemas kini dan pemadaman. Apabila ia melibatkan operasi data, pengendalian transaksi adalah isu yang sangat penting kerana ini memastikan ketekalan dan integriti pangkalan data. Dalam artikel ini, kami akan meneroka cara mengendalikan transaksi dalam bahasa Go.

1. Apakah itu transaksi?
Dalam pangkalan data hubungan, transaksi ialah unit operasi yang mesti dilakukan secara keseluruhan. Jika salah satu operasi gagal, semua operasi dalam urus niaga harus dibuat asal dan ditarik balik. Dalam MySQL, urus niaga boleh diurus menggunakan penyata BEGIN, COMMIT dan ROLLBACK.

2. Bagaimana untuk mengendalikan transaksi dalam bahasa Go?
Dalam bahasa Go, proses memproses transaksi MySQL dibahagikan kepada tiga langkah:

1 Buka transaksi: Gunakan kaedah db.Begin() untuk membuka transaksi. Ini akan mengembalikan penunjuk untuk menaip Tx, yang mewakili transaksi MySQL.

 
 db, err := sql.Open("mysql", dataSourceName)
 tx, err := db.Begin()

2. Lakukan operasi pangkalan data: Gunakan penunjuk jenis Tx untuk melaksanakan operasi pangkalan data. Sebarang ralat yang berlaku sebelum semua operasi selesai dikekalkan dalam penunjuk jenis Tx sehingga transaksi selesai atau digulung semula.

 // 插入数据
 stmt, err := tx.Prepare("INSERT INTO users(name,age) VALUES(?,?)")
 _, err = stmt.Exec("Tom", 20)
 if err != nil {
     tx.Rollback()
     return err
 }

3. Komit atau tarik balik transaksi: Apabila semua operasi pangkalan data berjaya diselesaikan, kaedah Commit() penunjuk jenis Tx harus dipanggil untuk melakukan transaksi. Jika ralat berlaku semasa operasi atau pembatalan diperlukan, kaedah Rollback() penunjuk jenis Tx boleh dipanggil.

 err := tx.Commit()
 if err != nil {
     tx.Rollback()
     return err
 }

3. Contoh kod lengkap

utama pakej

import (

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

)

fungsi utama() {

   dataSourceName := "username:password@protocol(address of db)/database"
   db, err := sql.Open("mysql", dataSourceName)
   if err != nil {
       panic(err.Error())
   }
   defer db.Close()

   tx, err := db.Begin()
   if err != nil {
       panic(err.Error())
   }

   stmt, err := tx.Prepare("INSERT INTO users(name,age) VALUES(?,?)")
   _, err = stmt.Exec("Tom", 20)
   if err != nil {
       tx.Rollback()
       panic(err.Error())
   }

   stmt, err = tx.Prepare("UPDATE users SET age = ? WHERE name = ?")
   _, err = stmt.Exec(21, "Tom")
   if err != nil {
       tx.Rollback()
       panic(err.Error())
   }

   err = tx.Commit()
   if err != nil {
       tx.Rollback()
       panic(err.Error())
   }

}

4. Kesimpulan
Memproses transaksi adalah tugas yang sangat penting, dan aplikasi MySQL tidak terkecuali. Mengendalikan transaksi adalah sangat mudah apabila menulis aplikasi MySQL dalam Go. Cuma ikut langkah untuk membuka transaksi, melaksanakan operasi dan melakukan atau tarik balik transaksi. Ini memastikan ketekalan dan integriti pangkalan data, menjadikannya lebih teguh dan boleh dipercayai.

Atas ialah kandungan terperinci Cara mengendalikan transaksi dalam aplikasi MySQL yang ditulis dalam bahasa Go. 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