Maison >développement back-end >Golang >Le contexte sera-t-il utilisé par défaut dans l'ensemble de la transaction SQL ?

Le contexte sera-t-il utilisé par défaut dans l'ensemble de la transaction SQL ?

PHPz
PHPzavant
2024-02-05 22:45:04783parcourir

Le contexte sera-t-il utilisé par défaut dans lensemble de la transaction SQL ?

Contenu de la question

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=?")

Bonne réponse


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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer