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


GO Tx.Rollback用法及代码示例


GO语言"database/sql"包中"Tx.Rollback"类型的用法及代码示例。

用法:

func(tx *Tx) Rollback() error

回滚中止事务。

例子:

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 := 53
	_, err = tx.ExecContext(ctx, "UPDATE drivers SET status = ? WHERE id = ?;", "assigned", id)
	if err != nil {
		if rollbackErr := tx.Rollback(); rollbackErr != nil {
			log.Fatalf("update drivers: unable to rollback: %v", rollbackErr)
		}
		log.Fatal(err)
	}
	_, err = tx.ExecContext(ctx, "UPDATE pickups SET driver_id = $1;", id)
	if err != nil {
		if rollbackErr := tx.Rollback(); rollbackErr != nil {
			log.Fatalf("update failed: %v, unable to back: %v", err, rollbackErr)
		}
		log.Fatal(err)
	}
	if err := tx.Commit(); err != nil {
		log.Fatal(err)
	}
}

相关用法


注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 Tx.Rollback。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。