mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-11-21 03:13:05 +08:00
Update FAQ.
This commit is contained in:
parent
db7aa99fb9
commit
36458b93e0
15
doc/FAQ
15
doc/FAQ
@ -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?
|
||||
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user