最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go?GORM?事務詳細介紹

 更新時間:2022年07月31日 09:07:15   作者:v2v1  
這篇文章主要介紹了Go?GORM事務詳細介紹,GORM?會在事務里執(zhí)行寫入操作創(chuàng)建、更新、刪除,具體詳細介紹需要的朋友可以參考下面文章的簡單介紹

禁用默認事務

為了確保數(shù)據(jù)一致性,GORM 會在事務里執(zhí)行寫入操作(創(chuàng)建、更新、刪除)。如果沒有這方面的要求,您可以在初始化時禁用它,這將獲得大約 30%+ 性能提升。

// 全局禁用
db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
  SkipDefaultTransaction: true,
})

// 持續(xù)會話模式
tx := db.Session(&Session{SkipDefaultTransaction: true})
tx.First(&user, 1)
tx.Find(&users)
tx.Model(&user).Update("Age", 18)

事務

要在事務中執(zhí)行一系列操作,一般流程如下:

db.Transaction(func(tx *gorm.DB) error {
  // 在事務中執(zhí)行一些 db 操作(從這里開始,您應該使用 'tx' 而不是 'db')
  if err := tx.Create(&Animal{Name: "Giraffe"}).Error; err != nil {
    // 返回任何錯誤都會回滾事務
    return err
  }

  if err := tx.Create(&Animal{Name: "Lion"}).Error; err != nil {
    return err
  }

  // 返回 nil 提交事務
  return nil
})

嵌套事務

GORM 支持嵌套事務,您可以回滾較大事務內(nèi)執(zhí)行的一部分操作,例如:

db.Transaction(func(tx *gorm.DB) error {
  tx.Create(&user1)

  tx.Transaction(func(tx2 *gorm.DB) error {
    tx2.Create(&user2)
    return errors.New("rollback user2") // Rollback user2
  })

  tx.Transaction(func(tx2 *gorm.DB) error {
    tx2.Create(&user3)
    return nil
  })

  return nil
})
// Commit user1, user3

手動事務

// 開始事務
tx := db.Begin()

// 在事務中執(zhí)行一些 db 操作(從這里開始,您應該使用 'tx' 而不是 'db')
tx.Create(...)

// ...

// 遇到錯誤時回滾事務
tx.Rollback()

// 否則,提交事務
tx.Commit()

一個特殊的示例

func CreateAnimals(db *gorm.DB) error {
  // 再嘮叨一下,事務一旦開始,你就應該使用 tx 處理數(shù)據(jù)
  tx := db.Begin()
  defer func() {
    if r := recover(); r != nil {
      tx.Rollback()
    }
  }()

  if err := tx.Error; err != nil {
    return err
  }

  if err := tx.Create(&Animal{Name: "Giraffe"}).Error; err != nil {
     tx.Rollback()
     return err
  }

  if err := tx.Create(&Animal{Name: "Lion"}).Error; err != nil {
     tx.Rollback()
     return err
  }

  return tx.Commit().Error
}

SavePoint、RollbackTo

GORM 提供了 SavePoint、Rollbackto 來提供保存點以及回滾至保存點,例如:

tx := db.Begin()
tx.Create(&user1)

tx.SavePoint("sp1")
tx.Create(&user2)
tx.RollbackTo("sp1") // Rollback user2

tx.Commit() // Commit user1

到此這篇關于Go GORM 事務詳細介紹的文章就介紹到這了,更多相關Go GORM 事務 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Go語言學習之WaitGroup用法詳解

    Go語言學習之WaitGroup用法詳解

    Go語言中的?WaitGroup?和?Java?中的?CyclicBarrier、CountDownLatch?非常類似。本文將詳細為大家講講WaitGroup的用法,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-06-06
  • 解決golang sync.Wait()不執(zhí)行的問題

    解決golang sync.Wait()不執(zhí)行的問題

    這篇文章主要介紹了解決golang sync.Wait()不執(zhí)行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang內(nèi)存泄漏場景以及解決方案詳析

    Golang內(nèi)存泄漏場景以及解決方案詳析

    golang中內(nèi)存泄露的發(fā)現(xiàn)與排查一直是來是go開發(fā)者頭疼的一件事,下面這篇文章主要給大家介紹了關于Golang內(nèi)存泄漏場景以及解決的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • Go語言基礎枚舉的用法及示例詳解

    Go語言基礎枚舉的用法及示例詳解

    這篇文章主要為大家介紹了Go語言基礎枚舉的用法及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-11-11
  • Win7環(huán)境下搭建Go開發(fā)環(huán)境(基于VSCode編輯器)

    Win7環(huán)境下搭建Go開發(fā)環(huán)境(基于VSCode編輯器)

    這篇文章主要介紹了Win7環(huán)境下搭建Go開發(fā)環(huán)境(基于VSCode編輯器),需要的朋友可以參考下
    2017-02-02
  • golang elasticsearch Client的使用詳解

    golang elasticsearch Client的使用詳解

    這篇文章主要介紹了golang elasticsearch Client的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • GO實現(xiàn)協(xié)程池管理的方法

    GO實現(xiàn)協(xié)程池管理的方法

    這篇文章給大家介紹GO實現(xiàn)協(xié)程池管理的方法,分別使用channel實現(xiàn)協(xié)程池和消費者模式實現(xiàn)協(xié)程池,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2021-07-07
  • Go語言基礎學習之map的示例詳解

    Go語言基礎學習之map的示例詳解

    哈希表是常見的數(shù)據(jù)結構,有的語言會將哈希稱作字典或者映射,在Go中,哈希就是常見的數(shù)據(jù)類型map,本文就來聊聊Golang中map的相關知識吧
    2023-04-04
  • golang 64位linux環(huán)境下編譯出32位程序操作

    golang 64位linux環(huán)境下編譯出32位程序操作

    這篇文章主要介紹了golang 64位linux環(huán)境下編譯出32位程序操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go語言中序列化與反序列化示例詳解

    Go語言中序列化與反序列化示例詳解

    我們的數(shù)據(jù)對象要在網(wǎng)絡中傳輸或保存到文件,就需要對其編碼和解碼動作,Go語言當然也支持所有這些編碼格式,下面這篇文章主要給大家介紹了關于Go語言中序列化與反序列化的相關資料,需要的朋友可以參考下
    2022-07-07

最新評論

东光县| 娱乐| 饶阳县| 郑州市| 黄陵县| 陆良县| 三明市| 湖南省| 格尔木市| 兴国县| 巨野县| 龙游县| 梧州市| 香河县| 虎林市| 政和县| 仙游县| 麻阳| 房产| 上思县| 扬州市| 徐水县| 五大连池市| 中牟县| 丹阳市| 嘉荫县| 冀州市| 广昌县| 祁连县| 漯河市| 谢通门县| 霍邱县| 三河市| 光山县| 蒙自县| 湾仔区| 嘉峪关市| 准格尔旗| 突泉县| 白玉县| 天柱县|