2016-07-01 7 views
1

私は2つのテーブルを持っているとしましょう。両方に同時に行を挿入する方法はありますか?私は1つのテーブルを持っていたとき、私は今、1つの電子メールを格納するテーブルと、最初と最後の名前を格納関連付けられたテーブルを持っている場合は、私は単純にPostgresでのINSERT INTOの関連付け

INSERT INTO users (first_name, last_name, email) VALUES ('Tom','Prats','[email protected]'), ('Tim', 'Prats', [email protected]); 

を行うことができ、どのように私は一度に両方を挿入していますか?私は多くのデータをインポートしています。

Table "users" Column | Type | Modifiers ---------------------+---------------+----------- id | character(36) | not null email | text | Indexes: "pk_users" PRIMARY KEY, btree (id) Foreign-key constraints: "fk_users_attributes" FOREIGN KEY (attributes_id) REFERENCES user_attributes(id)

Table "user_attributes" Column | Type | Modifiers -----------------+---------------+----------- id | character(36) | not null first_name | text | last_name | text | Indexes: "pk_user_attributes" PRIMARY KEY, btree (id) Referenced by: TABLE "users" CONSTRAINT "fk_users_attributes" FOREIGN KEY (attributes_id) REFERENCES user_attributes(id)

答えて

1

あなただけの挿入によってこれを行うことはできません。

これを1行で行う必要がある場合は、2つの挿入を行う短い関数を記述するのが最善の方法です。これにより、1コールにつき1つのトランザクションが発生します(これが主な問題だった場合)。

また、私は別のアプリケーションからデータをインポートしていますData-Modifying Statements in WITH

+0

を使用することができますので、私はWITH'が役立つだろう 'とは思わないが、これは私が事前に両方のテーブルの主キーを生成することができます実現に貢献んでした私はそれらを別々に挿入すると関連します –