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)    
    }
    
}
相关推荐
小心草里有鬼1 天前
Linux 数据库 Mysql8 主从复制
linux·运维·数据库·sql·mysql
chen_note1 天前
Keepalived两个集群实验
linux·服务器·数据库·keepalived·高可用集群
boy快快长大1 天前
@Transactional 事务注解
数据库·sql·oracle
大白的编程日记.1 天前
【MySQL学习笔记】数据库的CURD(一)
数据库·学习·mysql
不剪发的Tony老师1 天前
RedisFront:一款免费开源的跨平台Redis客户端工具
数据库·redis·redisfront
什么半岛铁盒1 天前
C++项目:仿muduo库高并发服务器--------Any类的实现
linux·服务器·数据库·c++·mysql·github
努力学习的小廉1 天前
初识MYSQL —— 数据库基础
android·数据库·mysql
禁默1 天前
MySQL 表约束实战指南:从概念到落地,守护数据完整性
数据库·mysql
l1t1 天前
测试duckdb的C插件模板的编译加工和加载
c语言·开发语言·数据库·插件·duckdb
T - mars1 天前
数据迁移:MySQL => SQL Server
数据库·mysql