Je me demandais si vous utilisiez le contexte pour démarrer la transaction si toute la transaction « écouterait » ici ?
tx, _ := db.BeginTx(ctx, &sql.TxOptions{Isolation: sql.LevelSerializable}) stmt, _ := tx.Prepare("SELECT id, timeout, lang FROM client WHERE id=?")
Ou appliquez-vous explicitement le contexte à chaque requête ?
tx, _ := db.BeginTx(ctx, &sql.TxOptions{Isolation: sql.LevelSerializable}) stmt, _ := tx.PrepareContext(ctx, "SELECT id, timeout, lang FROM client WHERE id=?")
Non. Prepare
et d'autres méthodes sans contexte, utilisez context.Background.
De Tx.Préparer la documentation...
Consultez le code source, ce n'est qu'un simple wrapper.
func (tx *Tx) Prepare(query string) (*Stmt, error) { return tx.PrepareContext(context.Background(), query) }
Bien que Tx stocke le contexte de db.BeginTx
, celui-ci n'est utilisé que pour les transactions. Il ne l'utilisera pas pour les requêtes car le contexte partagé serait déroutant et restrictif.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!