GORM 中使用事務


GORM 中使用事務

事務處理可以用來維護數據庫的完整性,保證成批的 SQL 語句要么全執行,要么全不執行

禁用默認事務

為了確保數據一致性,GORM 會在事務里執行寫入操作(創建、更新、刪除)。如果沒有這方面的要求,您可以在初始化時禁用它,這將獲得大約 30%+ 性能提升

	DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
		QueryFields: true, //打印sql
		SkipDefaultTransaction: true, //禁用mysql事務
	})

GORM 默認會將單個的 create, update, delete 操作封裝在事務內進行處理,以確保數據的完 整性。如果你想把多個 create, update, delete 操作作為一個原子操作,Transaction 就是用來完成 這個的。

模擬轉賬使用事務

package models

//https://gorm.io/zh_CN/docs/connecting_to_the_database.html
import (
	"fmt"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

var DB *gorm.DB
var err error

func init() {
	dsn := "gin:gin@tcp(111.229.91.20:3306)/gin?charset=utf8mb4&parseTime=True&loc=Local"
	DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
		QueryFields: true, //打印sql
		SkipDefaultTransaction: true, //禁用mysql事務
	})
	// DB.Debug()
	if err != nil {
		fmt.Println(err)
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM