事务: 多个任务合起来称为一个事务
比如转账, 一个账户要增加钱, 另一个帐户要减少钱, 可能还有其它的关联任务
无论怎样, 至少是两个sql任务, 所以要保证这两个任务同时成功或同时失败, 则必须用到事务
事务最重要的就是原子性, 即多个任务同时成功或同时失败
事务操作:
开启事务 -- 执行多个任务(若失败, 则回滚) -- 提交事务
在go里面可使用第三方的库sqlx, 非常简便地操作mysql事务
conn, err := db.Begin() -- 开启事务, 返回事务与数据库的"连结", 这个连结暂时代替原来的"连结", 用于操作数据库
conn.Rollback() -- 若事务失败, 则回滚
conn.Commit -- 提交事务
package main
import (
"fmt"
_ "github.com/go-sql-driver/mysql" // 数据库驱动
"github.com/jmoiron/sqlx" // 导入第三方的sqlx
)
var db *sqlx.DB // 与数据库的连结实例
type Person struct{
Id int
Name string
Sex string
Email string
}
/*在init中连结mysql*/
func init() {
var err error
db, err = sqlx.Open("mysql", "root:@tcp(127.0.