本文整理汇总了Golang中github.com/jinzhu/gorm.DB.Rollback方法的典型用法代码示例。如果您正苦于以下问题:Golang DB.Rollback方法的具体用法?Golang DB.Rollback怎么用?Golang DB.Rollback使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/jinzhu/gorm.DB
的用法示例。
在下文中一共展示了DB.Rollback方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Set
func (p *SettingDao) Set(db *gorm.DB, key string, val interface{}, enc bool) error {
dt, err := web.ToBits(val)
if err != nil {
db.Rollback()
return err
}
if enc {
dt, err = p.Aes.Encode(dt)
if err != nil {
db.Rollback()
return err
}
}
st := Setting{ID: key}
var cn int
db.Model(st).Count(&cn)
if cn == 0 {
st.Val = dt
db.Create(&st)
} else {
db.Model(&st).Updates(Setting{Val: dt})
}
return nil
}
示例2: Transactional
// Transactional executes the given function in a transaction. If todo returns an error, the transaction is rolled back
func Transactional(db *gorm.DB, todo func(tx *gorm.DB) error) error {
var tx *gorm.DB
tx = db.Begin()
if tx.Error != nil {
return tx.Error
}
if err := todo(tx); err != nil {
tx.Rollback()
return errs.WithStack(err)
}
tx.Commit()
return tx.Error
}