Re: [pgsql-ru-general] Возможно ли вставлять в несколько таблиц? - Mailing list pgsql-ru-general

From Dmitriy Igrishin
Subject Re: [pgsql-ru-general] Возможно ли вставлять в несколько таблиц?
Date
Msg-id CAAfz9KP4RqniSGF8-pZ4eZFkp_XPWydaOBTs-5fY6pqDM+kV3Q@mail.gmail.com
Whole thread Raw
Responses Re: [pgsql-ru-general] Re: [pgsql-ru-general] Возможно ли вставлять в несколько таблиц?
List pgsql-ru-general
Привет,

31 октября 2011 г. 12:12 пользователь Dmitry E. Oboukhov <unera@debian.org> написал:
Если пишем

INSERT INTO table1 (a, b) VALUES (1, 2) RETURNING "id", '123' AS "name"

то возвращается результат вида

id | name
1  | 123
2  | 123
3  | 123

и так далее

Поскольку INSERT - SELECT работает то возникает соблазн написать

INSERT INTO table2 (table1_id, name)

   INSERT INTO table1 (a, b) VALUES (1, 2) RETURNING "id", '123' AS "name"


Но такая запись не работает. Говорит что синтаксическая ошибка на
втором INSERT. А в документации не вижу упоминания о том что в
качестве query нельзя применять INSERT.

И вот поскольку здесь есть некая двоякость в том к чему относится
RETURNING то я думаю, может я неправильно чет в синтаксисе делаю?
RETURNING ... не тоже самое, что SELECT ..., поэтому так
делать нельзя. Добиться желаемого эффекта можно
поместив INSERT ... RETURNING в функцию, возвращающую
требуемый набор столбцов (или композитный тип).

--
// Dmitriy.


pgsql-ru-general by date:

Previous
From: "Dmitry E. Oboukhov"
Date:
Subject: Возможно ли вставлять в несколько таблиц?
Next
From: Sergey Konoplev
Date:
Subject: Re: [pgsql-ru-general] Re: [pgsql-ru-general] Возможно ли вставлять в несколько таблиц?