PostgreSQL の CTE を使用した複数の行の挿入
テーブル 1、テーブル 2、テーブル 3 の 3 つのテーブルを持つリレーショナル データベースがあるとします。テーブル table1 には一般的なユーザー情報が含まれ、テーブル table2 と table3 にはパスワードやアドレスなどの追加データが含まれます。 table1 に新しいユーザーを追加するときに、ユーザー ID とその他の一意のデータを子テーブル table2 と table3 に同時に挿入する必要があります。
Postgres 9.3 の データ変更 CTE は、このシナリオの解決策。 CTE を使用すると、複数の INSERT 操作を効率的にチェーンできます。
データ変更 CTE を使用してタスクを実行する方法は次のとおりです:
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 -- Nothing to return here ) INSERT INTO table3 (user_id, address, city, phone) SELECT ins1.user_id, ..., ... FROM ins1 RETURNING user_id;
CTE の内訳:
ベスト プラクティス:
以上がPostgreSQL CTE はどのようにして複数のテーブルに複数の行を効率的に挿入できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。