Re: Nextval Problems

From: Keary Suska <hierophant(at)pcisys(dot)net>
To: Postgres-PHP <pgsql-php(at)postgresql(dot)org>
Subject: Re: Nextval Problems
Date: 2002-08-22 05:06:44
Message-ID: B989CD84.1239E%hierophant@pcisys.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-php

on 8/21/02 6:33 PM, tom(at)betterhealthfoundation(dot)org purportedly said:

> Problem is, I have to add 1 onto the nextval to make this work, and when I
> look at the ids that are being added into the tables, they are not
> consecutive, one is being missed each time, so for instance I have 1000,
> 1002, 1004, etc.
>
> Can anyone help? Is this something to do with the way I am connecting to the
> database? I build it all the insertion pieces into one query separated by
> ";", of course.

That is a really bad idea. Don't do that.

> Originally I thought that was the problem, and split them
> into separate queries and then ran them one after the other, but no dice. Am
> I misunderstanding nextval?

Hard to say. The code below is not all of the code, and insufficient to
determine what is wrong. In any case, nextval will increment the sequence
and return the incremented value. It's good to keep in mind that sequence
manipulations are not effected by transactions, just in case.

Now let's see what we have here.

> // Need to get value of next input id for agency_contact_info field
> $strnextval="SELECT nextval('agency_contact_info_id_key');";

The semicolon in the query is at least superfluous if not dangerous. Remove
it. Are you *really* sure you never call this SQL again? *Anywhere*? Are you
*really* sure you are not calling setval, *anywhere*?

> // Open Recordset
> $q_nextval=pg_exec($dbconn, $strnextval)
> or die("Couldn't open the database --> " . pg_errormessage($q_nextval));
>
> // Need to work out why this has to be '+1'
> $nextid=pg_result($q_nextval,0)+1;

Surprised you're not getting an error here. There is a 3rd missing parameter
to the pg_result command. And this command is deprecated as of 4.2. In any
case, adding 1 to this value should be pointless and dangerous.
>
> // Breast Cancer Resources
> $strinsert_breast="INSERT INTO breast_cancer_resources (id) VALUES
> ($nextid);";

Looks OK, except you should remove the semicolon.

So--I don't see much wrong. If you make the changes I recommend, and you are
still experiencing the problem, there is still something wrong with your
code. Probably in the parts you don't show us.

Keary Suska
Esoteritech, Inc.
"Leveraging Open Source for a better Internet"

In response to

Responses

Browse pgsql-php by date

  From Date Subject
Next Message Justin Clift 2002-08-22 12:43:55 Re: Nextval Problems
Previous Message Mark Stosberg 2002-08-22 02:20:54 Re: Event recurrence - in database or in application code ????