Update FAQ.

This commit is contained in:
Bruce Momjian 2001-10-13 03:53:45 +00:00
parent db7aa99fb9
commit 36458b93e0
2 changed files with 20 additions and 10 deletions

15
doc/FAQ
View File

@ -1,7 +1,7 @@
Frequently Asked Questions (FAQ) for PostgreSQL
Last updated: Fri Oct 12 23:37:30 EDT 2001
Last updated: Fri Oct 12 23:53:35 EDT 2001
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
@ -825,9 +825,11 @@ BYTEA bytea variable-length byte array (null-safe)
One approach is to to retrieve the next SERIAL value from the sequence
object with the nextval() function before inserting and then insert it
explicitly. Using the example table in 4.16.1, that might look like
this:
$newSerialID = nextval('person_id_seq');
this in Perl:
$sql = "SELECT nextval('person_id_seq')";
$newSerialID = ($conn->selectrow_array($sql))[0];
INSERT INTO person (id, name) VALUES ($newSerialID, 'Blaise Pascal');
$res = $dbh->do($sql);
You would then also have the new value stored in $newSerialID for use
in other queries (e.g., as a foreign key to the person table). Note
@ -838,7 +840,9 @@ BYTEA bytea variable-length byte array (null-safe)
Alternatively, you could retrieve the assigned SERIAL value with the
currval() function after it was inserted by default, e.g.,
INSERT INTO person (name) VALUES ('Blaise Pascal');
$newID = currval('person_id_seq');
$res = $conn->do($sql);
$sql = "SELECT currval('person_id_seq')";
$newSerialID = ($conn->selectrow_array($sql))[0];
Finally, you could use the OID returned from the INSERT statement to
look up the default value, though this is probably the least portable
@ -849,7 +853,8 @@ BYTEA bytea variable-length byte array (null-safe)
4.16.3) Don't currval() and nextval() lead to a race condition with other
users?
No. This is handled by the backends.
No. Currval() returns the current value assigned by your backend, not
by all users.
4.17) What is an OID? What is a TID?

View File

@ -12,7 +12,7 @@
alink="#0000FF">
<H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1>
<P>Last updated: Fri Oct 12 23:37:30 EDT 2001</P>
<P>Last updated: Fri Oct 12 23:53:35 EDT 2001</P>
<P>Current maintainer: Bruce Momjian (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
@ -1046,10 +1046,12 @@ BYTEA bytea variable-length byte array (null-safe)
value from the sequence object with the <I>nextval()</I> function
<I>before</I> inserting and then insert it explicitly. Using the
example table in <A href="#4.16.1">4.16.1</A>, that might look like
this:</P>
this in Perl:</P>
<PRE>
$newSerialID = nextval('person_id_seq');
$sql = "SELECT nextval('person_id_seq')";
$newSerialID = ($conn->selectrow_array($sql))[0];
INSERT INTO person (id, name) VALUES ($newSerialID, 'Blaise Pascal');
$res = $dbh->do($sql);
</PRE>
You would then also have the new value stored in
<CODE>$newSerialID</CODE> for use in other queries (e.g., as a
@ -1064,7 +1066,9 @@ BYTEA bytea variable-length byte array (null-safe)
<I>after</I> it was inserted by default, e.g.,</P>
<PRE>
INSERT INTO person (name) VALUES ('Blaise Pascal');
$newID = currval('person_id_seq');
$res = $conn->do($sql);
$sql = "SELECT currval('person_id_seq')";
$newSerialID = ($conn->selectrow_array($sql))[0];
</PRE>
Finally, you could use the <A href="#4.17"><SMALL>OID</SMALL></A>
returned from the <SMALL>INSERT</SMALL> statement to look up the
@ -1076,7 +1080,8 @@ BYTEA bytea variable-length byte array (null-safe)
<H4><A name="4.16.3">4.16.3</A>) Don't <I>currval()</I> and
<I>nextval()</I> lead to a race condition with other users?</H4>
<P>No. This is handled by the backends.</P>
<P>No. Currval() returns the current value assigned by your
backend, not by all users.</P>
<H4><A name="4.17">4.17</A>) What is an <SMALL>OID</SMALL>? What is
a <SMALL>TID</SMALL>?</H4>