zoukankan      html  css  js  c++  java
  • Golang之Mysql事务

    Mysql事务
    1)原子性
    2)一致性
    3)隔离性
    4)持久性

    示例代码

    package main
    
    import (
        "fmt"
        _ "github.com/go-sql-driver/mysql" //初始化一个mysql驱动,必须
        "github.com/jmoiron/sqlx"
    )
    
    type Person struct {
        UserId   int    `db:"user_id"`
        Username string `db:"username"`
        Sex      string `db:"sex"`
        Email    string `db:"email"`
    }
    type Place struct {
        Country string `db:"country"`
        City    string `db:"city"`
        TelCode int    `db:"telcode"`
    }
    
    var Db *sqlx.DB
    
    func init() {
        //"mysql"指定数据库类型,  /test指定打开的数据库  root:123 冒号隔开密码 root账号 123密码
        database, err := sqlx.Open("mysql", "root@tcp(127.0.0.1:3306)/test")
        if err != nil {
            fmt.Println("open mysql failed,", err)
            return
        }
        Db = database
    }
    func main() {
        //事务操作
        conn, err := Db.Begin()
        if err != nil {
            return
        }
    
        //插入数据入表
        r, err := Db.Exec("insert into person(username,sex,email)values(?,?,?)", "chaoge", "man", "yc_uuu@163.com")
        if err != nil {
            fmt.Println("exec failed,", err)
            return
        }
    
        id, err := r.LastInsertId()
        if err != nil {
            fmt.Println("exec failed,", err)
            //回滚
            conn.Rollback()
            return
        }
        fmt.Println("insert succ:", id)
        //提交事务 conn.Commit() }
  • 相关阅读:
    axios
    es6
    $route监听路由变化
    容易挂
    自定义全局组件/插件
    eslintrc.js
    dev-server.js
    webpack-dev-server.js
    怎么消除间隔间的空白字符
    es6语法
  • 原文地址:https://www.cnblogs.com/pyyu/p/8409460.html
Copyright © 2011-2022 走看看