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