我想知道,如果你开始一个具有上下文的事务,整个事务是否会“监听”这个上下文?
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=?")
型
1条答案
按热度按时间bq3bfh9z1#
No.
Prepare
和其他无上下文的方法使用context.Background.从Tx准备文件...
Prepare在内部使用context.Background;要指定上下文,请使用PrepareContext。
看看the source code,它只是一个简单的 Package 器。
字符串
虽然Tx已经存储了来自
db.BeginTx
的上下文,但它只用于事务。它不用于查询,因为sharing Contexts leads to confusion and restrictions。