doulao3905 2019-04-29 02:25
浏览 117
已采纳

我必须在* sql.Tx.Rollback()调用之前调用* sql.Rows.Close()吗?

When I using sql package of golang, if I make a query within transaction, and encounter an error while calling rows.Scan(), which method should I call first after this point? *sql.Tx.Rollback() or *sql.Rows.Close()? Currently I call *sql.Rows.Close() before *sql.Tx.Rollback(), but I want to know, what will happen if I reverse this order?

tx, err := db.Begin()
if err != nil {
    ... // handle error
}


rows, err := tx.Query("sqlstmt")
if err != nil {
    ... // handle error
}


defer rows.Close() // can I use defer at this place, though it will be called after tx.Rollback()?


if err := rows.Scan(vars...); err != nil {
    if e := tx.Rollback(); e != nil {
        log(e)
        return e
    }
    return err
}
  • 写回答

1条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 MATLAB 调用comsol如何加速设计?
      • ¥15 echarts地图添加点击事件
      • ¥15 不知道带什么标题好随便搞一个吧
      • ¥15 ffmpeg 图片合成视频
      • ¥15 软科大学爬取获取所有数据
      • ¥15 如何修改损失函数以及代码讲解
      • ¥15 有偿咨询!!程序的小数点怎么取到后四位啊!
      • ¥15 IRS智能反射面相关文章代码
      • ¥15 landsat5的两幅影像镶嵌前波段是123457,为什么镶嵌后波段变成了123456?
      • ¥15 关于#matlab#中fmincon函数如何处理约束问题?