- 数据库事务支持嵌套

This commit is contained in:
gazebo
2019-03-25 18:11:34 +08:00
parent 24421325d9
commit 8e213c2392

View File

@@ -14,7 +14,8 @@ const (
) )
type DaoDB struct { type DaoDB struct {
db orm.Ormer transactionLevel int
db orm.Ormer
} }
// func GetRows(db *gorm.DB, inPtr interface{}, sql string, values ...interface{}) (err error) { // func GetRows(db *gorm.DB, inPtr interface{}, sql string, values ...interface{}) (err error) {
@@ -62,16 +63,28 @@ func WrapDB(ormDb orm.Ormer) *DaoDB {
return &DaoDB{db: ormDb} return &DaoDB{db: ormDb}
} }
func Begin(db *DaoDB) error { func Begin(db *DaoDB) (err error) {
return db.db.Begin() if db.transactionLevel == 0 {
err = db.db.Begin()
}
db.transactionLevel++
return err
} }
func Commit(db *DaoDB) error { func Commit(db *DaoDB) (err error) {
return db.db.Commit() if db.transactionLevel <= 1 {
err = db.db.Commit()
db.transactionLevel = 0
} else {
db.transactionLevel--
}
return err
} }
func Rollback(db *DaoDB) error { func Rollback(db *DaoDB) (err error) {
return db.db.Rollback() err = db.db.Rollback()
db.transactionLevel = 0
return err
} }
func GetRow(db *DaoDB, inPtr interface{}, sql string, values ...interface{}) (err error) { func GetRow(db *DaoDB, inPtr interface{}, sql string, values ...interface{}) (err error) {