存在doesntの場合:私たちは、JSON形式で保存する製品のダンプを取得INSERT、それは私たちは、別の店舗名、商品詳細に何か私たちのかなり大きなテーブルを正規化してきた
CREATE TABLE store_products
(
id BIGINT DEFAULT PRIMARY KEY NOT NULL,
storeid INTEGER REFERENCES store(id),
productid BIGINT REFERENCES product_details(id)
producturlid BIGINT REFERENCES product_url(id)
);
をし、我々各項目を繰り返し処理し、Delphiコンソールアプリケーションを介してPostgresに挿入します。これは同時に実行されます(したがって、4つのスレッドが製品のJSON配列を挿入して取得します)。
これは、最初に確認する、それを挿入し戻すIDをキャッシュしない場合は店舗名は、store
テーブルに存在する場合は、URLによって名前でproduct
とproduct_url
ための同じこと。
これらのチェックを1つずつ実行することなく、このテーブル(および外部テーブル)にデータを挿入する方法はありますか?私はCTE(WITH)を見てきましたが、私はこの問題の解決策であることは確信しています。
コードの前後の性質はトランザクション内で重いものになります。
older SO postsは類似していますが、解決策は実行可能ではないようです。私が見ているものはUSPERTとCTEを使ってと思われる。