事务提交与回退¶
func startTxByDb(db * sql.DB){
var err error
var result sql.Result
var tx * sql.Tx
var val1 int = 10
var val2 string = "hello"
var insertSQL string = "insert into testcase1(col1, col2) values(:1, :2)"
//从连接池中开启一个事务
tx, err = db.Begin()
getError(err)
result, err = tx.Exec(insertSQL, val1, val2)
if err != nil{
//事务回退
if rollbackErr := tx.Rollback(); rollbackErr != nil {
log.Fatalf("unable to rollback: %b", rollbackErr)
}
log.Fatalln(err)
return
}
rowsAffected, err := result.RowsAffected()
getError(err)
fmt.Println(rowsAffected)
//事务提交
if err = tx.Commit(); err != nil {
log.Fatalln(err)
}
}