Подтвердить что ты не робот

PostgreSql INSERT FROM SELECT RETURNING ID

В PostgreSql 9.2.4 у меня есть две таблицы: user (id, login, password, name) и dealer (id, user_id).

И я хочу вставить в обе таблицы возвращающий идентификатор созданного дилера.

В настоящее время я делаю это с двумя запросами:

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?

4b9b3361

Ответ 1

Вам просто нужно добавить RETURNING id к вашему INSERT ... SELECT:

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

Демо: http://sqlfiddle.com/#!12/75008/1