ホームページ > データベース > mysql チュートリアル > 複数列 RETURNING により、複数のテーブルにわたる PostgreSQL の挿入をどのように強化できるでしょうか?

複数列 RETURNING により、複数のテーブルにわたる PostgreSQL の挿入をどのように強化できるでしょうか?

Linda Hamilton
リリース: 2025-01-01 07:47:09
オリジナル
638 人が閲覧しました

How Can Multi-Column RETURNING Enhance PostgreSQL Inserts Across Multiple Tables?

効率的な PostgreSQL 挿入のための複数列 RETURNING の利用

データ管理の世界では、単一の RETURNING で複数の挿入を実行できる機能条項を使用すると、業務を合理化し、効率を高めることができます。この記事では、PostgreSQL 9.3 での複数挿入操作の複雑さを掘り下げ、新しく生成された ID を取得しながら複数の子テーブルにデータをシームレスに挿入する方法を紹介します。

このシナリオには 3 つのテーブルが含まれます:

  • table1 (親): user_id、ユーザー名、名前、姓、 emp_date
  • table2 (table1 の子): pass_id、user_id、password
  • table3 (table1 の子): user_dt_id、user_id、adress、city、phone

ここでのタスクは、table1 にデータを挿入し、同時に table2 と table3 の user_id 列に新しく生成された user_id.

これを実現するために、データ変更用の Common Table Expressions (CTE) を採用しています。 CTE を使用すると、複数の SQL ステートメントを 1 つのユニットに結合して、挿入プロセスを効率化できます。 CTE 実装の詳細な内訳は次のとおりです:

WITH ins1 AS (  -- Insert into 'table1'
   INSERT INTO table1 (username, name, surname)
   VALUES ('johnee', 'john', 'smith')
   RETURNING user_id
   ),
ins2 AS (  -- Insert into 'table2' with 'user_id' from 'ins1'
   INSERT INTO table2 (user_id, password)
   SELECT ins1.user_id, 'secret'
   FROM ins1  -- No need to return anything here
   )
INSERT INTO table3 (user_id, adress, city, phone)  -- Insert into 'table3' with 'user_id' from 'ins1'
SELECT ins1.user_id, ...
FROM ins1
RETURNING user_id;
ログイン後にコピー

主要な実装の詳細:

  • テーブル構造の変更に起因する潜在的な問題を回避するために、INSERT ステートメントの列定義リストを推奨します。 .
  • 冗長な DEFAULT 値は省略され、簡潔かつ効率的な値が可能になります。 code.
  • 最後の RETURNING 句は、最後の INSERT 操作から user_id を取得します。これは通常、table3 の user_id と一致します。

要約すると、PostgreSQL で RETURNING を使用したマルチ挿入を使用します。複数のテーブルにわたって単一のバッチ挿入が可能になり、複雑さが軽減され、パフォーマンスが最適化されます。データ変更 CTE はこれを実現する便利な手段を提供し、複雑なデータ挿入ワークフローに信頼性の高い効率的なソリューションを提供します。

以上が複数列 RETURNING により、複数のテーブルにわたる PostgreSQL の挿入をどのように強化できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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