効率的な PostgreSQL 挿入のための複数列 RETURNING の利用
データ管理の世界では、単一の RETURNING で複数の挿入を実行できる機能条項を使用すると、業務を合理化し、効率を高めることができます。この記事では、PostgreSQL 9.3 での複数挿入操作の複雑さを掘り下げ、新しく生成された ID を取得しながら複数の子テーブルにデータをシームレスに挿入する方法を紹介します。
このシナリオには 3 つのテーブルが含まれます:
ここでのタスクは、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;
主要な実装の詳細:
要約すると、PostgreSQL で RETURNING を使用したマルチ挿入を使用します。複数のテーブルにわたって単一のバッチ挿入が可能になり、複雑さが軽減され、パフォーマンスが最適化されます。データ変更 CTE はこれを実現する便利な手段を提供し、複雑なデータ挿入ワークフローに信頼性の高い効率的なソリューションを提供します。
以上が複数列 RETURNING により、複数のテーブルにわたる PostgreSQL の挿入をどのように強化できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。