- 数据库事务支持嵌套
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user