From: | Bruno Wolff III <bruno(at)wolff(dot)to> |
---|---|
To: | David Pratt <fairwinds(at)eastlink(dot)ca>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: Update more than one table |
Date: | 2005-07-12 17:11:45 |
Message-ID: | 20050712171145.GB9490@wolff.to |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Tue, Jul 12, 2005 at 17:35:35 +0200,
Roman Neuhauser <neuhauser(at)sigpipe(dot)cz> wrote:
> # bruno(at)wolff(dot)to / 2005-07-12 10:08:37 -0500:
> > On Sun, Jul 10, 2005 at 15:05:30 -0300,
> > David Pratt <fairwinds(at)eastlink(dot)ca> wrote:
> > > Hi Roman. Many thanks for your reply. This is interesting and will I
> > > give this a try and let you know how it works out. With this you are
> > > right, application logic and transaction don't have to be separate
> > > which would be nice for this. I was thinking the only way to solve was
> > > a function that performed an update and returned the nextval at the
> > > same time so that I could use that value to perform the update on next
> > > table,etc.
> >
> > Normally you can just use currval. But in your case you insert insert two
> > records and currval will only return the value of the second record's key.
> > Assuming the first record's key is one less than the second's is not a good
> > idea. With the current version you can probably make this work reliably
> > by grabbing a block of ids for your session and making sure that the two
> > records get their keys from the same preallocated block.
>
> Notice the pseudo code I posted:
>
> INSERT INTO first_table ...; <- insert one row
> SELECT currval(first_table); <- first currval()
> INSERT INTO first_table ...; <- insert another row
> SELECT currval(first_table); <- second currval()
> INSERT INTO second_table ...; <- this ellipsis hides the two
> currval() return values
>
> See? I didn't assume anything.
I didn't claim that your approach was wrong. The issue is trying to reduce
the number of round trips by eliminating the two selects.
From | Date | Subject | |
---|---|---|---|
Next Message | Bjørn T Johansen | 2005-07-12 17:15:38 | Re: Windows version of PostgreSQL 8.x? |
Previous Message | Matt Miller | 2005-07-12 16:57:04 | Re: Windows version of PostgreSQL 8.x? |