首頁  >  文章  >  後端開發  >  go goose 事務什麼時候提交?

go goose 事務什麼時候提交?

王林
王林轉載
2024-02-08 21:54:20562瀏覽

go goose 事务什么时候提交?

php小編魚仔在這裡為大家解答一個常見的問題:"go goose 事務什麼時候提交?"在Go 語言中,事務的提交取決於具體的資料庫驅動。一般而言,當執行交易提交的操作時,資料庫會將目前交易的所有修改操作一次提交到資料庫中。這樣可以確保事務的原子性,即要么全部提交成功,要么全部回滾失敗。因此,事務的提交時機是在執行事務提交操作的時候,而不是在事務的開始或結束時。具體的使用方法可以參考相關的資料庫驅動文件。

問題內容

  • #我有一些程式碼需要在 tx 中運行,如下所示
  • 我產生了一個 go sql 遷移,如 go goose 的官方文件所述

我的問題是:

  • 這些事務什麼時候真正被 commited 到資料庫?
  • 我強制使用 tx.commit() 提交遷移。這是我在 go 中的遷移檔案:
func Up00002(tx *sql.Tx) error {
    _, err := tx.Exec("UPDATE users SET username='admin' WHERE username='root';")
    if err != nil {
        return err
    }

    if err = tx.Commit(); err != nil {
        return fmt.Errorf("error during committing the transaction: %w", err)
    }


    return nil
}

我無法在 down 部分之後運行上述遷移,因為當我運行它們時,我得到了 errtxdone (來源)。我仍然想多次運行 go 遷移 up00002 (用於測試)。我怎樣才能做到這一點?我在這裡做錯了什麼?

解決方法

因此,只需瀏覽他們的文檔此處即可顯示提交已經在AddMigrations 呼叫中發生- 這是使用ofc 事務,由go goose 內部處理- 非常好:)

對於sql也是如此,正如我們所看到的這裡

#pkg也提供了--no-transaction選項,我們可以使用它來完全控制db物件 - 太棒了!

以上是go goose 事務什麼時候提交?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除