php エディターの Yuzai が、「Go Goose トランザクションはいつ送信されますか?」というよくある質問に答えます。Go 言語では、トランザクションの送信は特定のデータベース ドライバーに依存します。 。一般に、トランザクションのコミット操作を実行するとき、データベースは現在のトランザクションのすべての変更操作を一度にデータベースに送信します。これにより、トランザクションのアトミック性、つまりすべてのコミットが成功するかすべてのロールバックが失敗することが保証されます。したがって、トランザクションの送信時刻は、トランザクションの開始時や終了時ではなく、トランザクションのコミット操作が実行されるときです。具体的な使用方法については、関連するデータベース ドライバーのドキュメントを参照してください。
tx
で実行する必要があるコードがいくつかあります。
の公式ドキュメントの説明に従って go sql 移行を生成しました。
これらのトランザクションが実際にデータベースに
移行をコミットするために、
tx.commit()
リーリー
上記の移行を実行すると down 部分の後には実行できません。私はまだ、 go migration
up00002 を複数回実行したいと考えています (テストのため)。これどうやってするの?ここで私は何を間違っているのでしょうか?
回避策
AddMigrations 呼び出しで行われていることがわかります。これは ofc トランザクションを使用しています。 go goose によって内部的に処理されます - 非常に素晴らしい :)
ここでわかるように、SQL にも同じことが当てはまります。
pkg には --no-transaction オプションも用意されており、これを使用して
db オブジェクトを完全に制御できます。素晴らしいです。
以上がgo goose トランザクションはいつ送信されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。