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
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 |