校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > golang實現mysql數據庫事務的提交與回滾

golang實現mysql數據庫事務的提交與回滾

熱門標簽:電話機器人軟件免費 excel地圖標注分布數據 外呼系統用什么卡 評價高的400電話辦理 涿州代理外呼系統 外呼系統顯本地手機號 百度地圖標注后傳給手機 阿克蘇地圖標注 壽光微信地圖標注

MySQL 事務主要用于處理操作量大,復雜度高的數據。在 MySQL 中只有使用了 Innodb 數據庫引擎的數據庫或表才支持事務。

事務用來管理 insert,update,delete 語句,事務處理可以用來維護數據庫的完整性,保證成批的 SQL 語句要么全部執行,要么全部不執行。

一般來說,事務是必須滿足4個條件(ACID)::原子性(Atomicity,或稱不可分割性)、一致性(Consistency)、隔離性(Isolation,又稱獨立性)、持久性(Durability)。

本文主要介紹golang實現MySQL數據庫事物的提交與回滾

用到的庫有:

"github.com/jmoiron/sqlx"
_ "github.com/go-sql-driver/mysql"

事務(Transactions)

事務操作是通過三個方法實現:

Begin():開啟事務

Commit():提交事務(執行sql)

Rollback():回滾

舉例:

在事物里操作MySQL任意一步操作出錯,都需要Rollback()回滾。

package main 
import (
 "fmt"
 "github.com/alecthomas/log4go"
 _ "github.com/go-sql-driver/mysql"
 "github.com/jmoiron/sqlx"
)
 
var Db *sqlx.DB 
func init()  {
 db,err:=sqlx.Open("mysql","TigerwolfC:123456@tcp(127.0.0.1:3306)/test?charset=utf8")
 if err != nil {
  fmt.Println("open mysql failed,", err)
  return
 }
 Db = db
}
 
func main()  {
 mysqlTest()
} 
 
func mysqlTest() error{
 tx, err := Db.Begin()
 if err != nil {
  log4go.Error("open mysql database fail", err)
  return err
 }
 
 result, err := tx.Exec("INSERT INTO userinfo (username, password,department,email) VALUES (?, ?,?,?)","cici","33333","it","TigerwolfC@163.com")
 if err != nil{
  fmt.Println("insert failed,error: ", err)
  tx.Rollback()
  return err
 }
 id,_ := result.LastInsertId()
 fmt.Println("insert id is :",id)
 _, err = tx.Exec("update userinfo set department = ? where username = ?","cekong","hahah")
 if err != nil{
  fmt.Println("update failed error:",err)
  tx.Rollback()
  return err
 } else {
  fmt.Println("update success!")
 }
 _, err = tx.Exec("delete from userinfo where username = ? ", "weiwei")
 if err != nil{
  fmt.Println("delete error:",err)
  tx.Rollback()
  return err
 }else{
  fmt.Println("delete success")
 }
 return tx.Commit()
}

當然也可以用defer tx.Rollback(),在程序退出前回滾。

func mysqlTest() error{
 tx, err := Db.Begin()
 if err != nil {
  log4go.Error("open mysql database fail", err)
 }
 defer tx.Rollback()
 
 result, err := tx.Exec("INSERT INTO userinfo (username, password,department,email) VALUES (?, ?,?,?)","cici","33333","it","TigerwolfC@163.com")
 if err != nil{
  fmt.Println("insert failed,error: ", err)
  return err
 }
 id,_ := result.LastInsertId()
 fmt.Println("insert id is :",id)
 _, err = tx.Exec("update userinfo set department = ? where username = ?","cekong","hahah")
 if err != nil{
  fmt.Println("update failed error:",err)
  return err
 } else {
  fmt.Println("update success!")
 }
 _, err = tx.Exec("delete from userinfo where username = ? ", "weiwei")
 if err != nil{
  fmt.Println("delete error:",err)
  return err
 }else{
  fmt.Println("delete success")
 }
 return tx.Commit()
}

補充:數據庫事務處理(go,mysql)

看代碼吧~

//數據庫連接池
var db *sql.DB
//初始化數據庫
func initDB() (err error){
	fmt.Println("學習數據庫")
	dsn := "usename:password@tcp(127.0.0.1:3306)/dataname"
	db, err = sql.Open("mysql",dsn)
	if err!=nil {
		fmt.Println("打開數據庫失敗 err:",err,".dsn:",dsn)
		return
	}
	err = db.Ping()
	if err!=nil {
		fmt.Println("open failed err:",err)
		return
	}
	fmt.Println("連接數據庫成功")
 
	//最大連接數
	db.SetMaxOpenConns(10)
	//設置連接池中的最大閑置連接數
	db.SetMaxIdleConns(10)
	return
}
 
func trans()  {
	tx, err := db.Begin()
	if err!=nil {
		fmt.Println("事務開啟失敗, err:",err)
		return
	}
	sqlStr1 := "update student set age=age-2 where id=1;"
	sqlStr2 := "update student set age=age+2 where id=3;"
	_, err = tx.Exec(sqlStr1)
	if err!=nil {
		fmt.Println("修改失敗, err",err,",sqlStr1:",sqlStr1)
		tx.Rollback()
		return
	}
 
	_, err = tx.Exec(sqlStr2)
	if err!=nil {
		fmt.Println("修改失敗, err",err,",sqlStr2:",sqlStr2)
		tx.Rollback()
		return
	}
 
	fmt.Println("執行成功")
	//提交事務
	tx.Commit()
}
func main() {
	fmt.Println("mysql 002.事務處理")
	initDB()
	trans() 
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • mysql創建表添加字段注釋的實現方法
  • MySQL之存儲過程按月創建表的方法步驟
  • mysql創建表的sql語句詳細總結
  • Hibernate4在MySQL5.1以上版本創建表出錯 type=InnDB
  • 詳解在MySQL中創建表的教程
  • MySQL動態創建表,數據分表的存儲過程
  • MYSQL建立外鍵失敗幾種情況記錄Can''t create table不能創建表
  • IDEA連接mysql數據庫報錯的解決方法
  • django將圖片保存到mysql數據庫并展示在前端頁面的實現
  • MySQL安裝后默認自帶數據庫的作用詳解
  • python3 實現mysql數據庫連接池的示例代碼
  • mysql數據庫入門第一步之創建表

標簽:重慶 梅河口 欽州 蘭州 銅川 汕頭 吐魯番 雞西

巨人網絡通訊聲明:本文標題《golang實現mysql數據庫事務的提交與回滾》,本文關鍵詞  golang,實現,mysql,數據庫,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang實現mysql數據庫事務的提交與回滾》相關的同類信息!
  • 本頁收集關于golang實現mysql數據庫事務的提交與回滾的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    琪琪久久久久日韩精品| 久草在线在线精品观看| 久久精品免费观看| 97成人超碰视| 欧美精品一区二区久久婷婷| 亚洲一区中文在线| 国产精品一级在线| 3d动漫精品啪啪一区二区竹菊 | 国产毛片精品视频| 欧美羞羞免费网站| 亚洲欧洲日产国码二区| 国产精品亚洲午夜一区二区三区| 精品视频免费看| 亚洲欧美日韩国产一区二区三区 | 久久爱另类一区二区小说| 在线视频观看一区| 综合av第一页| 成人黄页毛片网站| 欧美国产97人人爽人人喊| 免费成人美女在线观看.| 欧美人动与zoxxxx乱| 一区二区三区日本| 色婷婷国产精品| 亚洲欧美日韩一区二区| 99精品热视频| 亚洲视频电影在线| 色婷婷综合久久久中文一区二区| 亚洲国产精品成人综合色在线婷婷| 极品尤物av久久免费看| 精品国内二区三区| 国产精品18久久久久久久久久久久 | 在线观看91av| 久久在线观看免费| 亚洲激情av在线| 国产在线日韩欧美| 欧美最猛性xxxxx直播| 久久美女高清视频| 亚洲国产精品综合小说图片区| 久久99精品一区二区三区三区| 一本色道久久综合亚洲aⅴ蜜桃| 日韩三级.com| 一区二区三区成人在线视频| 国产精品一线二线三线精华| 欧美精品丝袜中出| 亚洲日本欧美天堂| 韩国毛片一区二区三区| 欧美性猛片aaaaaaa做受| 国产亚洲欧美在线| 美腿丝袜亚洲综合| 欧美无乱码久久久免费午夜一区| 久久久久国色av免费看影院| 亚洲h动漫在线| 色哟哟一区二区在线观看 | 91网上在线视频| 精品国产乱码久久久久久老虎| 亚洲一区二区三区视频在线| 北岛玲一区二区三区四区| 精品国产sm最大网站免费看| 爽好久久久欧美精品| 色天使色偷偷av一区二区| 国产精品午夜春色av| 国产成人午夜视频| 久久老女人爱爱| 精品亚洲欧美一区| 日韩一区二区三区视频| 欧美aaaaaa午夜精品| 欧美日韩精品免费| 亚洲成人av一区二区| 欧美日韩在线播放| 午夜精品久久久久久久蜜桃app| 91色视频在线| 亚洲电影在线免费观看| 欧美性受极品xxxx喷水| 亚洲天堂免费在线观看视频| 91影院在线观看| 亚洲情趣在线观看| 在线观看国产一区二区| 亚洲精品福利视频网站| 在线免费av一区| 亚洲国产成人av网| 在线成人小视频| 日韩 欧美一区二区三区| 日韩精品中文字幕一区| 国产专区欧美精品| 国产精品久久久久婷婷| 91色综合久久久久婷婷| 亚洲成人资源网| 欧美va亚洲va| 成人小视频免费观看| 亚洲男人的天堂在线观看| 欧美三级乱人伦电影| 久久av老司机精品网站导航| 国产肉丝袜一区二区| 91色|porny| 奇米888四色在线精品| 久久久久成人黄色影片| 97精品国产露脸对白| 图片区小说区国产精品视频| 日韩一区二区麻豆国产| 国产成人av一区二区三区在线观看| 中文字幕不卡在线| 欧美日本一区二区三区| 国产一区二区三区四区在线观看| 国产精品久久久久久久久免费丝袜| 色菇凉天天综合网| 蜜臀av性久久久久蜜臀aⅴ | 亚洲午夜三级在线| 日韩美女主播在线视频一区二区三区| 国产99久久久国产精品潘金 | 久久激情五月激情| 国产精品国产三级国产a| 在线播放中文字幕一区| www.欧美色图| 精品亚洲国内自在自线福利| 亚洲人成小说网站色在线| 欧美一区二区三区影视| 成人a级免费电影| 久久精品理论片| 夜夜嗨av一区二区三区中文字幕 | 亚洲chinese男男1069| 久久久美女艺术照精彩视频福利播放| 在线观看不卡视频| 国产69精品一区二区亚洲孕妇| 午夜视频一区二区| 国产精品久久久久三级| www一区二区| 欧美一区二区三区白人| 91电影在线观看| a亚洲天堂av| 国产夫妻精品视频| 日韩一区精品字幕| 亚洲成人先锋电影| 一区二区日韩电影| 国产精品欧美久久久久一区二区| 日韩视频一区在线观看| 欧美日本一区二区在线观看| 一本色道久久加勒比精品| 国产成人精品综合在线观看| 极品美女销魂一区二区三区| 日本欧美韩国一区三区| 亚洲国产日韩精品| 一区二区三区在线视频播放| 国产精品久久久久影院亚瑟 | 中文字幕av一区二区三区| www久久精品| 欧美成人video| 日韩欧美久久久| 日韩欧美国产一区二区三区| 日韩视频一区在线观看| 日韩你懂的在线观看| 日韩午夜电影av| 日韩精品专区在线影院重磅| 欧美大片一区二区| 精品电影一区二区三区| 亚洲精品一线二线三线| 久久久不卡影院| 国产精品萝li| 一区二区三区在线视频播放| 亚洲国产精品久久人人爱蜜臀| 午夜日韩在线电影| 日本aⅴ精品一区二区三区 | 国产精品高潮呻吟| 综合在线观看色| 亚洲影视在线观看| 日韩av电影天堂| 国产二区国产一区在线观看| 成人黄色a**站在线观看| 日本精品免费观看高清观看| 欧美视频精品在线| 日韩一二三区不卡| 国产亚洲精久久久久久| ...xxx性欧美| 午夜精品福利在线| 韩国毛片一区二区三区| a级高清视频欧美日韩| 欧美日韩精品一区二区三区 | 成人毛片在线观看| 欧美亚洲高清一区| 精品久久一区二区| 成人欧美一区二区三区1314| 一个色妞综合视频在线观看| 久久99精品国产麻豆婷婷| 99久久久久免费精品国产 | 国产精品不卡一区二区三区| 一区二区三区在线观看视频| 美女免费视频一区二区| 99视频有精品| 欧美成人一级视频| 亚洲精品国产第一综合99久久| 美国三级日本三级久久99 | 日韩和欧美一区二区三区| 国产乱一区二区| 欧美精品亚洲一区二区在线播放| 国产欧美日韩另类一区| 午夜在线电影亚洲一区| 成人自拍视频在线观看| 日韩欧美一级在线播放| 亚洲在线观看免费视频| 成人高清伦理免费影院在线观看| 欧美一区二区三区不卡|