首頁 > 後端開發 > Golang > 主體

整個sql事務中會預設使用context嗎?

PHPz
發布: 2024-02-05 22:45:04
轉載
656 人瀏覽過

整個sql事務中會預設使用context嗎?

問題內容

我想知道如果整個事務會在此處「監聽」該上下文,那麼您是否使用上下文啟動交易?

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事務中會預設使用context嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!