原子性,一致性,隔离性,持久性
手动开启事务:db.Begin()-->Tx
一组sql操作
tx.Exec(),tx.Prepare()...
手动提交提交,回滚
tx.Commit(),tx.Rollback()
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql"
)func main() { /* 事务: 4大特性:ACID 原子性: 一致性: 隔离性: 永久性: */
//rose-->jack,2000元 db, _ := sql.Open("mysql",
"root:hanru1314@tcp(127.0.0.1:3306)/my1802?charset=utf8") //开启事务 tx, _ :=
db.Begin()//提供一组sql操作 var aff1, aff2 int64 = 0, 0 result1, _ := tx.Exec("UPDATE
account SET money=3000 WHERE id=?", 1) result2, _ := tx.Exec("UPDATE account
SET money2=2000 WHERE id=?", 2) //fmt.Println(result2) if result1 != nil { aff1,
_ = result1.RowsAffected() }if result2 != nil { aff2, _ = result2.RowsAffected()
; } fmt.Println(aff1) fmt.Println(aff2) if aff1 == 1 && aff2 == 1 { //提交事务
tx.Commit() fmt.Println("操作成功。。") } else { //回滚 tx.Rollback() fmt.Println(
"操作失败。。。回滚。。") } }
技术
今日推荐