Created
August 12, 2021 20:47
-
-
Save duthied/9f2019cde4433740ceb62fe4e8793e41 to your computer and use it in GitHub Desktop.
golang transaction
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func ExampleTx_Rollback() { | |
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) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment