How do I get the rec-id from an insert.
How do I get the rec-id from an insert.
am 28.08.2002 05:40:17 von Chris Ruprecht
Hi all,
I have 3 tables:
a:
a.recid
a.name
b:
b.recid
b.address
b.city
c:
c.recid
c.arecid
c.brecid
each has a default sequence on their respective recid - which is the primar=
y=20
index.
when I do an "insert into a ...", it automagically assigns recid a new, uni=
que=20
value, same goes for b.
But to create c, I need to know the recid from a and b, so I can connect th=
e=20
two.
Is there any way to get the recid from a and b after they have been inserte=
d=20
like in "insert into a ... and give me the recid you're going to use, back"?
I know, I can do a "netxval('...')" stuff and then insert the records with=
=20
values in recid, but that requires two extra calls to the DB per transactio=
n.
Best regards,
Chris
--=20
Chris Ruprecht
Network Grunt and bitpusher extraordinaire
---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
Re: How do I get the rec-id from an insert.
am 29.08.2002 23:00:15 von Clinton Adams
Chris -
You don't really need to know the key values - make it one query:
insert into c values (nextval('crecid'), currval('arecid'), currval('brecid'))
On Tue August 27 2002 21:40, Chris Ruprecht graced us with the following -
> Hi all,
>
> I have 3 tables:
>
> a:
> a.recid
> a.name
>
> b:
> b.recid
> b.address
> b.city
>
> c:
> c.recid
> c.arecid
> c.brecid
>
>
> each has a default sequence on their respective recid - which is the
> primary index.
>
> when I do an "insert into a ...", it automagically assigns recid a new,
> unique value, same goes for b.
>
> But to create c, I need to know the recid from a and b, so I can connect
> the two.
> Is there any way to get the recid from a and b after they have been
> inserted like in "insert into a ... and give me the recid you're going to
> use, back"?
>
> I know, I can do a "netxval('...')" stuff and then insert the records with
> values in recid, but that requires two extra calls to the DB per
> transaction.
>
> Best regards,
> Chris
---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?
http://www.postgresql.org/users-lounge/docs/faq.html
Re: How do I get the rec-id from an insert.
am 30.08.2002 00:58:15 von Bruno Wolff III
On Thu, Aug 29, 2002 at 15:00:15 -0600,
Clinton Adams wrote:
> Chris -
>
> You don't really need to know the key values - make it one query:
>
> insert into c values (nextval('crecid'), currval('arecid'), currval('brecid'))
Is it documented that the above is reliable? I don't remember ever reading
that expressions are evaluated in the order they appear in a select
statement.
---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
Re: How do I get the rec-id from an insert.
am 30.08.2002 02:52:46 von Clinton Adams
Bruno -
Three sequences are involved in the INSERT. If one sequence were involved,
then the expressions would be evaluated left to right, at least from what I
can tell through my tests. Not something I would ever use...or rely on, for
that matter.
On Thu August 29 2002 16:58, Bruno Wolff III graced us with the following -
> > insert into c values (nextval('crecid'), currval('arecid'),
> > currval('brecid'))
>
> Is it documented that the above is reliable? I don't remember ever reading
> that expressions are evaluated in the order they appear in a select
> statement.
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?
http://archives.postgresql.org