go 执行一个SQL 事务 示例
时间: 2024-03-20 11:41:35 浏览: 13
以下是一个使用Go语言执行 SQL 事务的示例:
```go
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
DBHost = "localhost"
DBPort = ":3306"
DBUser = "root"
DBPassword = "password"
DBName = "test"
)
func main() {
db, err := sql.Open("mysql", DBUser+":"+DBPassword+"@tcp("+DBHost+DBPort+")/"+DBName)
if err != nil {
panic(err.Error())
}
defer db.Close()
// 开始事务
tx, err := db.Begin()
if err != nil {
panic(err.Error())
}
// 执行 SQL 语句
_, err = tx.Exec("INSERT INTO users (name, age) VALUES (?, ?)", "Tom", 25)
if err != nil {
// 回滚事务
tx.Rollback()
panic(err.Error())
}
// 执行 SQL 语句
_, err = tx.Exec("UPDATE users SET age = ? WHERE name = ?", 26, "Tom")
if err != nil {
// 回滚事务
tx.Rollback()
panic(err.Error())
}
// 提交事务
err = tx.Commit()
if err != nil {
panic(err.Error())
}
fmt.Println("SQL 事务已成功执行!")
}
```
在此示例中,我们使用Go语言的database/sql包和MySQL驱动程序来连接MySQL数据库,并执行了一个包含两个SQL语句的事务。首先,我们使用db.Begin()方法开启一个事务。然后,我们使用tx.Exec()方法执行两个SQL语句,如果其中任何一个SQL语句执行失败,我们将使用tx.Rollback()方法回滚事务。最后,我们使用tx.Commit()方法提交事务。