前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang之Mysql事务

Golang之Mysql事务

作者头像
超蛋lhy
发布2018-08-31 11:50:44
1.4K0
发布2018-08-31 11:50:44
举报
文章被收录于专栏:PythonistaPythonista
代码语言:javascript
复制
Mysql事务
1)原子性
2)一致性
3)隔离性
4)持久性

示例代码

代码语言:javascript
复制
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()
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-02-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档