美文网首页
golang mysql事务

golang mysql事务

作者: 杜子龙 | 来源:发表于2020-08-09 18:33 被阅读0次
func RunTx(connection *db.Connection, fn func(tx *sql.Tx) error) (err error) {
    tx, err := connection.Begin()
    if err != nil {
        return
    }
    defer func() {
        if e := recover(); e != nil {
            stack := debugutil.Stack(3)
            log.Errorf("[TxFactory] panic recovered:\n%s\n%s", e, stack)
            tx.Rollback()
            err = fmt.Errorf("tx panic:%s", e)
        }
    }()
    if err := fn(tx); err != nil {
        tx.Rollback()
        return err
    }
    if err = tx.Commit(); err != nil {
        tx.Rollback()
        return
    }
    return
}

相关文章

网友评论

      本文标题:golang mysql事务

      本文链接:https://www.haomeiwen.com/subject/hwfrdktx.html