golang中事务的使用-《GO开发知识笔记》

admin 2025-11-04 01:09:49 编程 来源:ZONE.CI 全球网 0 阅读模式
  • 事务介绍
  • 通过事务,保证数据一致性

    事务介绍

    上面两篇主要是介绍了怎么使用相关库连接数据库和最基础的数据增删改查。但是在实际开发过程中多数情况下,业务不会这么的单一,一般都是涉及到很多数据的修改,而这些修改又必须保持一致性(要么全部成功,要么全部失败。),这个时候就引入了事务的概念。

    通过事务,保证数据一致性

    事务的操作,一个begin必须有对应的commit或者rollback。以保证事务的完整func (db DB) Begin() (Tx, error)func (tx Tx) Commit() error Commit递交事务。func (tx Tx) Rollback() error Rollback放弃并回滚事务。使用完成之后必须要回收stmt和 *DB

    1. package main
    2. import (
    3. "database/sql"
    4. "fmt"
    5. _ "github.com/godror/godror"
    6. )
    7. var db *sql.DB
    8. const (
    9. host = "192.168.1.11"
    10. port = 1521
    11. user = "system"
    12. sqlpassword = "manager"
    13. dbname = "peixun"
    14. )
    15. func initsql(){
    16. osqlInfo := fmt.Sprintf("%s/%s@%s:%d/%s", user, sqlpassword, host, port, dbname)
    17. DB, err := sql.Open("godror", osqlInfo)
    18. if err != nil {
    19. panic(err)
    20. }
    21. err = DB.Ping()
    22. if err != nil {
    23. panic(err)
    24. }
    25. db = DB
    26. fmt.Println("链接成功")
    27. }
    28. func main(){
    29. initsql()
    30. defer db.Close()
    31. tx,err := db.Begin()
    32. if err!=nil{
    33. panic(err)
    34. }
    35. _, err = tx.Exec("insert into table_text(aaa,bbb,ccc,dddd) value(:x1,:x2,:x3,:x4)","aaa", "bbb","ccc",0)
    36. if err != nil {
    37. tx.Rollback()
    38. panic(err)
    39. }
    40. tx.Commit()
    41. }
    以太坊cppgolang区别 编程

    以太坊cppgolang区别

    以太坊是一种去中心化的开源平台,它采用智能合约技术,旨在构建和运行不受干扰的分布式应用程序。作为目前最受欢迎的区块链平台之一,以太坊提供了多种编程语言的支持,其
    progolang 编程

    progolang

    Go语言(Golang)是由Google开发的一门静态类型编程语言。作为一名专业的Golang开发者,我深知这门语言的优势和特点。在本文中,我将介绍Golang
    golangn个发送者 编程

    golangn个发送者

    Golang是一种开源的编程语言,由Google团队开发,旨在提高程序的并发性和简化软件开发过程。在Go语言中,有时需要向多个接收者发送信息。本文将介绍如何在G
    golang技能图谱 编程

    golang技能图谱

    从互联网行业的快速发展到人工智能技术的日益成熟,各种编程语言也应运而生。而在这众多的编程语言中,Golang(即Go)作为一门强大且高效的开发语言备受关注。Go
    评论:0   参与:  7