ホームページ  >  記事  >  バックエンド開発  >  新しい列に Go コードの値を埋め戻す

新しい列に Go コードの値を埋め戻す

王林
王林転載
2024-02-06 11:27:03883ブラウズ

使用 Go 代码中的值回填新列

質問内容

Go アプリケーション コードの値を新しい列に埋め戻す最良の方法は何ですか?理想的には、各行をループし、Go コードを呼び出し、戻り値を列の値として使用します。 Go コードはステートフルです。つまり、新しい行ごとに更新されるデータ構造に作用し、この情報に基づいて値を計算します。

私がやろうと考えているのは、移行を実行し、新しい列を null 許容として追加し、移行後に Go プログラムを実行して行をバックフィルすることです。ただし、特に最初から列が NULL であってはいけないため、これらすべてを 1 回の移行で実行できればより良いでしょう。

移行には Flyway を使用します。私たちのデータベースはPostgres 11.5です。


正解


移行を介して、つまりトランザクション内の 1 ステップでこの方法で新しい列を設定することはできません。代わりに、次のようなものが必要です:

  1. タイムスタンプ 123 より前のマークされた値を持つ新しい列の行を適切に処理するようにアプリケーションを更新します。
  2. 移行時に非 null 制約とデフォルトのタグ値を持つ新しい列を追加します。
  3. go プログラムを実行し、タイムスタンプ 123 より前の行のセンチネル値を適切な値に更新します。

この方法では、アプリケーションの変更が必要ですが、メンテナンス期間は必要ありません。また、移行時に制約が満たされないために移行が失敗することがなくなります。

以上が新しい列に Go コードの値を埋め戻すの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。