78

PostgreSql 9.2.4 には、 と の 2 つのテーブルがuser (id, login, password, name)ありdealer (id, user_id)ます。

そして、作成されたディーラーのIDを返す両方のテーブルに挿入したいと思います。

現在、私は2つのクエリでそれをやっています:

WITH rows AS (
    INSERT INTO "user"
        (login, password, name)
    VALUES
        ('dealer1', 'jygbjybk', 'Dealer 1')
    RETURNING id
)
INSERT INTO dealer (user_id)
    SELECT id
    FROM rows;
SELECT currval('dealer_id_seq');

しかし、ステートメントを使用して単一のINSERTクエリでこれを実装できますか?RETURNING

4

2 に答える 2

113

RETURNING idに aを追加するだけですINSERT ... SELECT:

WITH rows AS (...)
INSERT INTO dealer (user_id)
    SELECT id
    FROM rows
    RETURNING id;

デモ: http://sqlfiddle.com/#!12/75008/1

于 2013-10-03T19:40:37.123 に答える