- 数据库事务支持嵌套

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

View File

@@ -14,6 +14,7 @@ const (
) )
type DaoDB struct { type DaoDB struct {
transactionLevel int
db orm.Ormer db orm.Ormer
} }
@@ -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) {