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