Postgresの中央テーブルにプッシュするさまざまなサーバーがあり、これにより別の問題が発生します。テーブルに列を追加するとどうなりますか:
ALTER TABLE item ADD COLUMN category citext;
これで、テーブルには3つではなく4つの列があります。
私の既存のプッシュはすべてすぐに 入力から欠落している列があるため、中断します。すべてのサーバーを同時に更新できる可能性は0%であるため、これはオプションではありません。
1つの解決策は、テーブルのバージョンごとにカスタムタイプを作成することです。
CREATE TYPE item_v1 AS (
id uuid,
marked_for_deletion boolean,
name_ citext);
CREATE TYPE item_v2 AS (
id uuid,
marked_for_deletion boolean,
name_ citext,
category citext);
そして、各タイプの関数:
CREATE OR REPLACE FUNCTION data.item_insert_array (data_in item_v1[])
etc.
CREATE OR REPLACE FUNCTION data.item_insert_array (data_in item_v2[])
etc.
anyarrayを受け取り、CASEを使用して実行するコードを分類する単一の巨大なメソッドがあると思います。私はいくつかの理由でそれをしませんが、あなたはできると思います。 (私はそのアプローチが本当に急いで複数の言語で壊疽になるのを見ました。)
それはすべてかなりの作業のようです。私が見逃しているもっと簡単なテクニックはありますか?構造化テキスト/XML/ JSONを送信し、解凍してそこから作業できると想像しています。しかし、私は 「simpler」の下にファイルします。
明らかに、私はまだここで設計に取り組んでいます。示した内容をテストするのに十分なコードを作成しましたが、戻ってこれを数十のテーブルに実装する前に、詳細を整理したいと思います。
助けてくれてありがとう。