From: | lawpoop(at)gmail(dot)com |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | collision in serial numbers after INSERT? |
Date: | 2007-05-31 16:46:47 |
Message-ID: | 1180630007.363398.62400@m36g2000hse.googlegroups.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hello all -
I'm working on a site with PHP and Postgres, coming from a MySQL
background.
I was looking for an equivalent to the mysql_insert_id() function, and
a site recommended this:
function postg_insert_id($tablename, $fieldname)
{
global connection_id;
$result=pg_exec($connection_id, "SELECT last_value FROM ${tablename}_
${fieldname}_seq");
$seq_array=pg_fetch_row($result, 0);
return $seq_array[0];
}
It relies on pg's sequencing ability.
However, I wondered, if I were in an environment where there were many
concurrent inserts, would it be possible that I didn't get the serial
number of the insert that *I* just did? That if I do an insert, and
several inserts happen after mine, wouldn't I get the id of the latest
row, which is several inserts after mine?
I don't think this would be a problem in our environment, but I am
just wondering.
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2007-05-31 17:17:56 | Re: jdbc pg_hba.conf error |
Previous Message | Marco Colombo | 2007-05-31 16:32:12 | Re: PITR Base Backup on an idle 8.1 server |