當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。