婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 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數據庫事務的提交與回滾的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲国产精品视频| 懂色av一区二区三区蜜臀 | 制服.丝袜.亚洲.中文.综合| 中文字幕一区二区三区四区| 成人av电影观看| 国产精品伦理一区二区| 成人国产一区二区三区精品| 国产精品国产自产拍在线| 成人国产精品免费观看| 亚洲影视在线观看| 日韩一区二区在线看| 久久国产精品免费| 国产精品少妇自拍| 在线观看亚洲成人| 麻豆91在线观看| 亚洲视频一区二区在线观看| 7777精品久久久大香线蕉| 激情久久五月天| 亚洲婷婷综合久久一本伊一区| 91免费视频网址| 蜜臀av在线播放一区二区三区| 日韩欧美一二三区| 成人污污视频在线观看| 一区二区三区中文字幕在线观看| 5566中文字幕一区二区电影 | 丝袜诱惑制服诱惑色一区在线观看 | av在线一区二区三区| 亚洲麻豆国产自偷在线| 3d动漫精品啪啪一区二区竹菊| 国产一区二区三区香蕉| 一区二区免费在线| 欧美精品一区二区久久婷婷| 色88888久久久久久影院按摩| 九色综合狠狠综合久久| 亚洲精品国产一区二区精华液| 日韩三级高清在线| 在线精品视频免费观看| 国产iv一区二区三区| 日本不卡在线视频| 亚洲精品免费在线| 国产免费观看久久| 精品国产免费人成在线观看| 在线日韩av片| 91啪亚洲精品| 成人app网站| 欧美激情综合网| 一区二区三区日韩精品视频| 欧美精品免费视频| 国内成+人亚洲+欧美+综合在线 | 精品久久人人做人人爱| 国产精品1区2区3区在线观看| 一区二区三区久久久| 国产精品美女久久久久久| 欧美精品一区在线观看| 欧美精品一二三| 91免费版在线看| eeuss鲁片一区二区三区| 激情久久五月天| 极品美女销魂一区二区三区免费 | 国产精品电影一区二区三区| 精品国产乱码久久久久久1区2区| 欧美日韩在线三区| 日本乱人伦一区| 91福利视频久久久久| 成人动漫视频在线| 激情亚洲综合在线| 久久这里都是精品| 久久综合五月天婷婷伊人| 精品久久久久香蕉网| 欧美一级高清片| 亚洲综合无码一区二区| 天天色图综合网| 欧美剧在线免费观看网站| 另类成人小视频在线| 日韩免费看网站| 欧美日韩在线综合| 1区2区3区欧美| 99久久精品免费| 美女诱惑一区二区| 色综合久久久久久久久久久| 国产欧美日韩视频一区二区| 韩国精品主播一区二区在线观看 | caoporn国产精品| 欧美无人高清视频在线观看| 久久丝袜美腿综合| 国产精品综合久久| 日韩欧美国产一区二区在线播放 | 丁香网亚洲国际| 日韩理论片一区二区| 欧美高清一级片在线| 午夜精品福利一区二区蜜股av | 亚洲国产你懂的| 亚洲一区二区在线免费观看视频 | 国产女人aaa级久久久级| 日韩av网站在线观看| 欧美性猛片aaaaaaa做受| 国产剧情在线观看一区二区| 久久久不卡网国产精品二区| 无码av中文一区二区三区桃花岛| 免费在线观看成人| 91在线观看视频| 91精品国产入口| 中文字幕av不卡| 免费观看30秒视频久久| 成人app在线观看| 欧美国产97人人爽人人喊| 久久天堂av综合合色蜜桃网| 国产精品狼人久久影院观看方式| 欧美亚洲动漫另类| 欧美性感一区二区三区| 欧美一级日韩一级| 国产电影一区二区三区| 亚洲视频网在线直播| 欧美大片国产精品| aa级大片欧美| 成人av片在线观看| 成人动漫视频在线| 成人精品视频一区二区三区| 麻豆91免费看| 国产成人免费9x9x人网站视频| 久久国产乱子精品免费女| 日产欧产美韩系列久久99| 一区二区欧美精品| 亚洲欧洲日韩女同| 亚洲男人的天堂在线观看| 亚洲777理论| 九色综合狠狠综合久久| 国产电影精品久久禁18| 99久久精品国产麻豆演员表| www.在线欧美| 在线精品视频免费观看| 性感美女久久精品| 国产高清亚洲一区| 在线播放国产精品二区一二区四区| 久久综合色播五月| 免费精品视频在线| 久久久夜色精品亚洲| 中文字幕在线观看一区二区| 国产日韩欧美a| 亚洲美女屁股眼交3| 国产精品污污网站在线观看 | 肉丝袜脚交视频一区二区| 国产女主播一区| 婷婷成人激情在线网| 精品国产一区二区国模嫣然| 91丨porny丨户外露出| 色婷婷av久久久久久久| 91丨九色丨蝌蚪丨老版| 美国十次综合导航| 亚洲视频网在线直播| 久久久精品免费免费| 欧美高清性hdvideosex| 国产高清不卡二三区| 亚洲高清免费在线| 久久影院电视剧免费观看| 亚洲人成影院在线观看| 成人午夜视频福利| 中文字幕av一区二区三区高| eeuss影院一区二区三区| 国产嫩草影院久久久久| 99久久久久免费精品国产| 综合av第一页| 欧美在线免费观看亚洲| 亚洲自拍偷拍麻豆| 日韩精品专区在线影院观看| 五月婷婷欧美视频| 日韩精品在线看片z| 国产综合色视频| 亚洲青青青在线视频| 欧美亚洲国产一区二区三区| 日韩电影在线一区二区三区| 26uuu久久综合| 欧美亚洲图片小说| 成人午夜免费视频| 久久成人久久爱| 中文字幕一区二区不卡| 国产精品热久久久久夜色精品三区| 国产成人自拍网| 亚洲午夜影视影院在线观看| 亚洲精品在线网站| 日韩免费在线观看| 久久综合九色综合97_久久久| 久久久99久久| 欧美国产激情一区二区三区蜜月| 欧美一区二区三区在线| 另类的小说在线视频另类成人小视频在线| 91视频国产资源| 激情五月婷婷综合网| 亚洲欧美另类久久久精品| 欧美亚洲高清一区| 国产成人夜色高潮福利影视| 成人免费在线视频| 色婷婷久久一区二区三区麻豆| 日本vs亚洲vs韩国一区三区二区 | 久久精品国产免费看久久精品| 欧美一区二区三区人| 亚洲成国产人片在线观看| 韩国女主播一区二区三区| av电影一区二区| 国产精品污污网站在线观看|