1. ホーム
  2. sql

PostgreSql INSERT FROM SELECT RETURNING ID

2023-08-14 14:21:27

質問

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');

しかし、これを1つの INSERT クエリで RETURNING ステートメントを使用していますか?

どのように解決するのですか?

この問題を解決するには RETURNING id を追加するだけです。 INSERT ... SELECT :

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

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