当前位置: 首页>>代码示例>>用法及示例精选>>正文


golang sql DB.BeginTx用法及代码示例

GO语言database/sql包DB.BeginTx函数的用法及代码示例。

用法:

func (db *DB) BeginTx(ctx context.Context, opts *TxOptions) (*Tx, error)

BeginTx启动事务。

在提供事务或回滚事务之前,将使用提供的上下文。如果上下文被取消,则sql包将回滚事务。如果取消提供给BeginTx的上下文,则Tx.Commit将返回错误。

提供的TxOptions是可选的,如果应使用默认值,则可以为nil。如果使用了驱动程序不支持的非默认隔离级别,则将返回错误。

示例

package main

import (
	"context"
	"database/sql"
	"log"
)

var (
	ctx context.Context
	db  *sql.DB
)

func main() {
	tx, err := db.BeginTx(ctx, &sql.TxOptions{Isolation: sql.LevelSerializable})
	if err != nil {
		log.Fatal(err)
	}
	id := 37
	_, execErr := tx.Exec(`UPDATE users SET status = ? WHERE id = ?`, "paid", id)
	if execErr != nil {
		_ = tx.Rollback()
		log.Fatal(execErr)
	}
	if err := tx.Commit(); err != nil {
		log.Fatal(err)
	}
}

相关用法

注:本文由纯净天空筛选整理自golang.org大神的英文原创作品 golang sql DB.BeginTx。非经特殊声明,原始代码版权归原作者所有,本译文的传播和使用请遵循“署名-相同方式共享 4.0 国际 (CC BY-SA 4.0)”协议。