Re: [pgsql-ru-general] Возможно ли вставлять в несколько таблиц?
От | Dmitriy Igrishin |
---|---|
Тема | Re: [pgsql-ru-general] Возможно ли вставлять в несколько таблиц? |
Дата | |
Msg-id | CAAfz9KP4RqniSGF8-pZ4eZFkp_XPWydaOBTs-5fY6pqDM+kV3Q@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: [pgsql-ru-general] Re: [pgsql-ru-general] Возможно ли вставлять в несколько таблиц?
|
Список | pgsql-ru-general |
Привет,
// Dmitriy.
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 в функцию, возвращающую
требуемый набор столбцов (или композитный тип).
делать нельзя. Добиться желаемого эффекта можно
поместив INSERT ... RETURNING в функцию, возвращающую
требуемый набор столбцов (или композитный тип).
// Dmitriy.
В списке pgsql-ru-general по дате отправления: