Re: INSERT question

From: Jason Earl <jason(dot)earl(at)simplot(dot)com>
To: "Wilco Boschman" <w(dot)boschman(at)xs4all(dot)nl>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: INSERT question
Date: 2001-11-15 18:38:36
Message-ID: 878zd7vpzn.fsf@npa01zz001.simplot.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql


Yikes! Don't do that. For one thing:

SELECT max(primary_key) FROM parent_table;

Will not use the index in PostgreSQL. If you want to get the maximum
value of an indexed column it is far better to write something like
this:

SELECT primary_key FROM parent_table ORDER BY primary_key DESC LIMIT 1;

Yes, it takes longer to type, but it will use the index and return
your results immediately.

Even better, however, is to use the functions nextval() and currval()
like so:

INSERT INTO parent_table (data) values ('some data');
INSERT INTO child_table (parent, more_data)
(currval('parent_table_p_key_seq'),
'more data');

Jason

"Wilco Boschman" <w(dot)boschman(at)xs4all(dot)nl> writes:

> Insert the row into the parent table (the one with the primary key),
> then do a select max(<serial-column>) from parent_table; This will
> give you the greatest number in the table, that is if everything
> went ok the number from the row you just inserted. Then insert the
> row(s) into the second table and use the value you got from the
> parent table in the foreign key
>
> cheers
>
> Wilco
>
> "Brian" <Brian(at)McSweeney(dot)iol(dot)ie> schreef in bericht
> news:1f5f2b44(dot)0111130130(dot)17e8e57a(at)posting(dot)google(dot)com(dot)(dot)(dot)
> | Hi everyone,
> | I've a little question about using insert statements. I've got a
> | parent table with a "serial" (automatically incrementing integer)
> | primary key. I have a child table with a foreign key which references
> | that primary key. My question is:
> |
> | To insert values into the child table corresponding to an entry in the
> | parent table, how do I get a reference to the serial primary key (so
> | as I can reference it for the foreign key entry)
> |
> | Hope you understand what I mean. This should be a regular occurance
> | and seeing as I'm not an sql guru, I just don't have a clue!
> |
> | Any help would be SOOO appreciated.
> | Brian
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Jason Earl 2001-11-15 19:05:19 Re: How to best grab a chunk of Ids from a sequence
Previous Message Tom Lane 2001-11-15 18:25:24 Re: How to best grab a chunk of Ids from a sequence