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.boschman@xs4all.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@McSweeney.iol.ie> schreef in bericht
> news:1f5f2b44.0111130130.17e8e57a@posting.google.com...
> | 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