From: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
---|---|
To: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: Re: [pgsql-ru-general] Возможно ли вставлять в несколько таблиц? |
Date: | 2011-10-31 11:05:08 |
Message-ID: | 20111031110508.GB24714@apache.rbscorp.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
> Даже если заключить второе выражение в скобки и поставить SELECT, работать
> оно не будет. RETURNING возвращает выражение, похожее на SELECT, но не
> создает промежуточный множество, которое можно использовать как вложенный
> запрос. В 9.1 появилась поддержка writeable CTE, которые используют RETURNING
> и позволяют реализовать INSERT сразу в 2 таблицы без процедур, например:
> CREATE TABLE foo(a integer, b integer);
> CREATE TABLE bar(a integer, b integer);
> WITH insert_foo AS
> (INSERT INTO foo SELECT id, id * (-1)
> FROM generate_series(200,300) id RETURNING *)
> INSERT INTO bar SELECT * FROM insert_foo;
> Отличие в том, что CTE как раз создает промежуточную таблицу результатов выражения
> внтури WITH. К сожалению, это доступно только с 9.1
Спасибо!
Хороший повод съехать на 9.1
--
. ''`. Dmitry E. Oboukhov
: :’ : email: unera(at)debian(dot)org jabber://UNera(at)uvw(dot)ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
From | Date | Subject | |
---|---|---|---|
Next Message | Dmitry E. Oboukhov | 2011-11-11 21:05:56 | А что почитать про индексы? |
Previous Message | Alexey Klyukin | 2011-10-31 09:28:29 | Re: [pgsql-ru-general] Возможно ли вставлять в несколько таблиц? |