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

posted @ 2021-10-28 21:39  成强  阅读(1638)  评论(0编辑  收藏  举报