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