整个sql事务中会默认使用context吗?

PHPz
Freigeben: 2024-02-05 22:45:04
nach vorne
655 人浏览过

整个sql事务中会默认使用context吗?

问题内容

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

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

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

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


正确答案


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

来自 Tx.Prepare 文档...

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

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

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

以上是整个sql事务中会默认使用context吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!