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

From: Dmitriy Igrishin <dmitigr(at)gmail(dot)com>
To: "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org>
Cc: pgsql-ru-general(at)postgresql(dot)org
Subject: Re: [pgsql-ru-general] Возможно ли вставлять в несколько таблиц?
Date: 2011-10-31 08:25:57
Message-ID: CAAfz9KP4RqniSGF8-pZ4eZFkp_XPWydaOBTs-5fY6pqDM+kV3Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

Привет,

31 октября 2011 г. 12:12 пользователь Dmitry E. Oboukhov
<unera(at)debian(dot)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.

In response to

Responses

Browse pgsql-ru-general by date

  From Date Subject
Next Message Sergey Konoplev 2011-10-31 09:11:55 Re: [pgsql-ru-general] Re: [pgsql-ru-general] Возможно ли вставлять в несколько таблиц?
Previous Message Dmitry E. Oboukhov 2011-10-31 08:12:47 Возможно ли вставлять в несколько таблиц?