ホームページ > データベース > mysql チュートリアル > PostgreSQL で RETURNING を使用して複数の INSERT ステートメントを効率的にチェーンするにはどうすればよいですか?

PostgreSQL で RETURNING を使用して複数の INSERT ステートメントを効率的にチェーンするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-31 10:52:09
オリジナル
544 人が閲覧しました

How Can I Efficiently Chain Multiple INSERT Statements with RETURNING in PostgreSQL?

PostgreSQL での RETURNING による複数の INSERT の連鎖

階層データベース構造を操作する場合、多くの場合、依存関係のある複数のテーブルにデータを挿入する必要があります。 PostgreSQL では、データ変更 CTE と RETURNING 句の組み合わせが効率的なソリューションを提供します。

親テーブル table1 に新しい行を挿入し、子テーブル table2 と table3 に関連する行を設定するには、次の手順に従います。手順:

WITH ins1 AS (
   INSERT INTO table1 (username, name, surname)
   VALUES ('johnee','john','smith')
   RETURNING user_id
   )
, ins2 AS (
   INSERT INTO table2 (user_id, password)
   SELECT ins1.user_id, 'secret'
   FROM   ins1
   )
INSERT INTO table3 (user_id, adress, city, phone)
SELECT ins1.user_id, ...
FROM   ins1
RETURNING user_id;
ログイン後にコピー

CTE の分析チェーン:

  • 最初の CTE ins1 は、新しい行を table1 に挿入し、生成された user_id を返します。
  • 2 番目の CTE ins2 は、対応する行を table2 に挿入します。
  • 最後の INSERT ステートメントは、ins1 から返された user_id を使用します。 table3 に行を挿入します。オプションの RETURNING 句は、通常はシーケンスまたはデフォルト値から結果の user_id を返します。

データ変更 CTE を使用する利点:

  • 挿入の連鎖: CTE を使用すると、複数の INSERT ステートメントを連鎖させて、正しい挿入を保証できます。
  • 単純さ: WITH CTE を使用すると、クエリがより読みやすく、保守しやすくなります。
  • 効率: CTE は、以下によってパフォーマンスを向上させることができます。 INSERT ステートメントの実行順序を最適化します。

以上がPostgreSQL で RETURNING を使用して複数の INSERT ステートメントを効率的にチェーンするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート