go语言基础 事务:transaction

原子性,一致性,隔离性,持久性
手动开启事务: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("操作失败。。。回滚。。")
   }

}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值