- 数据库事务支持嵌套

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 {
db orm.Ormer
transactionLevel int
db orm.Ormer
}
// 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}
}
func Begin(db *DaoDB) error {
return db.db.Begin()
func Begin(db *DaoDB) (err error) {
if db.transactionLevel == 0 {
err = db.db.Begin()
}
db.transactionLevel++
return err
}
func Commit(db *DaoDB) error {
return db.db.Commit()
func Commit(db *DaoDB) (err error) {
if db.transactionLevel <= 1 {
err = db.db.Commit()
db.transactionLevel = 0
} else {
db.transactionLevel--
}
return err
}
func Rollback(db *DaoDB) error {
return db.db.Rollback()
func Rollback(db *DaoDB) (err error) {
err = db.db.Rollback()
db.transactionLevel = 0
return err
}
func GetRow(db *DaoDB, inPtr interface{}, sql string, values ...interface{}) (err error) {