登录
首页 >  Golang >  Go问答

所有SQL事务都会默认使用上下文吗?

来源:stackoverflow

时间:2024-02-06 15:27:23 401浏览 收藏

golang学习网今天将给大家带来《所有SQL事务都会默认使用上下文吗?》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

我想知道如果整个事务会在此处“监听”该上下文,那么您是否使用上下文启动事务?

tx, _ := db.BeginTx(ctx, &sql.TxOptions{Isolation: sql.LevelSerializable})
stmt, _ := tx.Prepare("SELECT id, timeout, lang FROM client WHERE id=?")

或者您是否明确地将上下文应用于每个查询?

tx, _ := db.BeginTx(ctx, &sql.TxOptions{Isolation: sql.LevelSerializable})
stmt, _ := tx.PrepareContext(ctx, "SELECT id, timeout, lang FROM client WHERE id=?")

正确答案


没有。 Prepare 和其他无上下文方法,请使用 context.Background

来自 Tx.Prepare 文档...

查看源代码,它只是一个简单的包装器。

func (tx *Tx) Prepare(query string) (*Stmt, error) {
    return tx.PrepareContext(context.Background(), query)
}

虽然 Tx 确实存储了来自 db.BeginTx 的上下文,但这仅用于事务。它不会将其用于查询,因为共享上下文会导致混乱和限制

今天关于《所有SQL事务都会默认使用上下文吗?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>