7.事务操作

  1. 使用db.Begin()进行开启
  2. 操作数据库
  3. 开启成功之后,进行事务操作

操作-Exec

查询-Query

Go 复制代码
func main(){
    //连接数据库
    db,err := sql.Open("mysql","ims:123456@tcp(192.168.0.26:3306)/ibcf")
    if err != nil{
        log.Fatal("连接数据库失败:",err)    
    }
    //关闭连接
    defer db.Close()
    //验证是否连接成功
    err = db.Ping()
    if err != nil{
        log.Fatal("验证失败:",err)    
    }
    fmt.Println("连接成功!")
    //开启事务
    tx,err := db.Begin()
    if err != nil{
        log.Fatal("开启事务失败:",err)    
    }
    //操作数据库
   
    
    if _,err := tx.Exec("UPDATE user0 SET server_port = ? WHERE id = ?","1111",1);err != nil{
        tx.Rollback()//事务回滚
        log.Fatal("更新失败:",err)    
    }
    
     _,err := tx.Query("SELECT id,server_ip,server_port FROM user0")
    if err != nil{
        tx.Rollback()//事务回滚
        log.Fatal("查询失败!")    
    }
    if _,err := tx.Exec("INSERT INTO user0(id,server_ip,server_port) VALUES(?,?,?)",2,"192.168.0.0",9090);err != nil{
         tx.Rollback()//事务回滚
         log.Fatal("插入数据失败:",err)    
    }
    //关闭
    if err := tx.Commit();err != nil{
        tx.Rollback()//事务回滚
        log.Fatal("关闭失败:",err)    
    }
    
}
相关推荐
SelectDB21 分钟前
天翼云与飞轮科技达成战略合作,共筑云数融合新生态
大数据·数据库·数据分析
望获linux1 小时前
【实时Linux实战系列】实时数据流处理框架分析
linux·运维·前端·数据库·chrome·操作系统·wpf
野犬寒鸦3 小时前
Pipeline功能实现Redis批处理(项目批量查询点赞情况的应用)
java·服务器·数据库·redis·后端·缓存
五岁小孩吖3 小时前
Mysql 如何使用 binlog 日志回滚操作失误的数据
mysql
꧁༺摩༒西༻꧂3 小时前
Spring Boot Actuator 监控功能的简介及禁用
java·数据库·spring boot
程序员JerrySUN3 小时前
当前主流GPU全景讲解:架构、功能与应用方向
数据库·人工智能·驱动开发·redis·缓存·架构
__Smile°3 小时前
kubeadm-k8s 中的 etcd 备份与恢复
数据库·docker·云原生·容器·kubernetes·etcd
Runing_WoNiu4 小时前
最佳左前缀法则(Optimal Left-Prefix Rule)
数据库·mysql
IvorySQL4 小时前
如何使用 pg_rman 进行 PostgreSQL 的备份与恢复
数据库
Tapdata5 小时前
一文了解增量物化视图维护(IVM):原理、演化与实践落地
数据库