内容简介:友情提示:此篇文章大约需要阅读 5分钟 9秒,不足之处请多指教,感谢你的阅读。数据库事务( transaction )是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。 事务由事务开始与事务结束之间执行的全部数据库操作组成。MySQL 存储引擎分类有 MyISAM、InnoDB、Memory、Merge等,但是其中最为常用的就是 MyISAM 和 InnoDB 两个引擎,这两个引擎中,支持事务的引擎就是 Innodb(MySQL 默认引擎),在创
友情提示:此篇文章大约需要阅读 5分钟 9秒,不足之处请多指教,感谢你的阅读。 订阅本站
事务
数据库事务( transaction )是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。 事务由事务开始与事务结束之间执行的全部数据库操作组成。
MySQL 存储引擎分类有 MyISAM、InnoDB、Memory、Merge等,但是其中最为常用的就是 MyISAM 和 InnoDB 两个引擎,这两个引擎中,支持事务的引擎就是 Innodb(MySQL 默认引擎),在创建数据库中要注意对应引擎。
这里可以看一下针对 MySQL 选择引擎的文章:
事务 ACID
通常事务必须满足4个条件( ACID ):原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。
Go 操作 MySQL 使用事务
Go语言中使用以下三个方法实现MySQL中的事务操作:
// 开始事务 func (db *DB) Begin() (*Tx, error) // 回滚事务 func (tx *Tx) Rollback() error // 提交事务 func (tx *Tx) Commit() error
示例代码:
// 事务更新操作
func transActionUpdate() {
tx, err := db.Begin()
if err != nil {
if tx != nil {
_ = tx.Rollback()
}
fmt.Printf("begin trans action failed, err:%v\n", err)
return
}
sqlStr1 := "UPDATE user SET age = ? WHERE id = ?"
result1, err := tx.Exec(sqlStr1, 20, 1)
if err != nil {
_ = tx.Rollback()
fmt.Printf("exec failed, err:%v\n", err)
return
}
n1, err := result1.RowsAffected()
if err != nil {
_ = tx.Rollback()
fmt.Printf("exec result1.RowsAffected() failed, err:%v\n", err)
return
}
sqlStr2 := "UPDATE user SET age = ? WHERE id = ?"
result2, err := tx.Exec(sqlStr2, 20, 6)
if err != nil {
_ = tx.Rollback()
fmt.Printf("exec failed, err:%v\n", err)
return
}
n2, err := result2.RowsAffected()
if err != nil {
_ = tx.Rollback()
fmt.Printf("exec result1.RowsAffected() failed, err:%v\n", err)
return
}
if n1 == 1 && n2 == 1 {
_ = tx.Commit()
fmt.Printf("transaction commit success\n")
} else {
_ = tx.Rollback()
fmt.Printf("transaction commit error, rollback\n")
return
}
}
参考(学习)文章: Go语言操作MySQL – 李文周的个人博客
欢迎关注我们的微信公众号,每天学习 Go 知识
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++数值算法(第二版)
William T.Vetterling、Brian P.Flannery、Saul A.Teukolsky / 胡健伟、赵志勇、薛运华 / 电子工业出版社 / 2005年01月 / 68.00
本书选材内容丰富,除了通常数值方法课程的内容外,还包含当代科学计算大量用到的专题,如求特殊函数值、随机数、排序、最优化、快速傅里叶变换、谱分析、小波变换、统计描述和数据建模、常微分方程和偏微分方程数值解、若干编码算法和任意精度的计算等。 本书科学性和实用性统一。每个专题中,不仅对每种算法给出了数学分析和比较,而且根据作者的经验对算法做出了评论和建议,并在此基础上给出了用C++语言编写的实用程......一起来看看 《C++数值算法(第二版)》 这本书的介绍吧!