Re: multiple INSERT

From: Joel Burton <jburton(at)scw(dot)org>
To: Renaud Thonnart <thonnart(at)amwdb(dot)u-strasbg(dot)fr>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: multiple INSERT
Date: 2001-05-02 21:55:09
Message-ID: Pine.LNX.4.21.0105021751540.21206-100000@olympus.scw.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Wed, 2 May 2001, Renaud Thonnart wrote:

> Hello everyone!
> I have readen in the doc of PostgreSQL that we can insert several tuples
> in a table at one time.
> But it is said that the tuples to insert must be the result of a SELECT.
>
> Could someone explain me what is the advantage of that technique ?
> Because if I have to build a temporary table before being able to
> perform multiple INSERT, I work 2 times more, isn't it ?
> Or perhaps does it exist a way to perform multiple insert without build
> a temporary table; something like :
> INSERT INTO table
> VALUES(...,...,...),
> VALUES(...,...,...);
> I really need your advice!
> Thank you all,
> Sincerelly, Renaud THONNART

Let's suppose you have the tables:

CREATE TABLE source (
id int,
f1 text );1

INSERT INTO source VALUES (1, 'foo');
INSERT INTO source VALUES (2, 'bar');
INSERT INTO source VALUES (3, 'snog');

CREATE TABLE second (
id int,
f1 text );

You can't insert several rows simultaneously into second by using INSERT
... VALUES. That is, you CANNOT:

INSERT INTO second VALUES ( 1, 'foo' ), (2, 'bar');

Some databases support this, but PostgreSQL doesn't yet.

What the INSERT piece means is that you *can* do this:

INSERT INTO second SELECT * FROM source;

... and all three records will be copied into the table "second".

HTH,
--
Joel Burton <jburton(at)scw(dot)org>
Director of Information Systems, Support Center of Washington

In response to

Browse pgsql-general by date

  From Date Subject
Next Message David Scholes 2001-05-02 21:57:02 Tuple Max Size on 7.1
Previous Message Joel Burton 2001-05-02 21:50:37 Re: DROP TABLE wildcard