Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
path: root/doc/FAQ
diff options
context:
space:
mode:
authorBruce Momjian2007-10-09 19:55:36 +0000
committerBruce Momjian2007-10-09 19:55:36 +0000
commitcd2cf74584b3938cb79dae83a87bf52d0e6ee75f (patch)
tree62514107b70308cfa160fb030a2b294aa8d8bf61 /doc/FAQ
parent81f285da7c65c753a8b5c3ff2bd9e0383f0c6251 (diff)
Update sequence FAQ items, per suggestion from Pavel Stehule.
Diffstat (limited to 'doc/FAQ')
-rw-r--r--doc/FAQ31
1 files changed, 11 insertions, 20 deletions
diff --git a/doc/FAQ b/doc/FAQ
index 9b06e5ac5c9..f35ada2c58b 100644
--- a/doc/FAQ
+++ b/doc/FAQ
@@ -1,7 +1,7 @@
Frequently Asked Questions (FAQ) for PostgreSQL
- Last updated: Mon Oct 8 23:19:46 EDT 2007
+ Last updated: Tue Oct 9 15:52:10 EDT 2007
Current maintainer: Bruce Momjian (bruce@momjian.us)
@@ -697,29 +697,20 @@
name TEXT
);
- See the create_sequence manual page for more information about
- sequences.
+ Automatically created sequence are named <table>_<serialcolumn>_seq,
+ where table and serialcolumn are the names of the table and SERIAL
+ column, respectively. See the create_sequence manual page for more
+ information about sequences.
4.11.2) How do I get the value of a SERIAL insert?
- One approach is 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.11.1, an example in a
- pseudo-language would look like this:
- new_id = execute("SELECT nextval('person_id_seq')");
- execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-
- You would then also have the new value stored in new_id for use in
- other queries (e.g., as a foreign key to the person table). Note that
- the name of the automatically created SEQUENCE object will be named
- <table>_< serialcolumn>_seq, where table and serialcolumn are the
- names of your table and your SERIAL column, respectively.
-
- Alternatively, you could retrieve the assigned SERIAL value with the
- currval() function after it was inserted by default, e.g.,
- execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
- new_id = execute("SELECT currval('person_id_seq')");
+ The simplest way is to retrieve the assigned SERIAL value with
+ RETURNING. Using the example table in 4.11.1, it would look like this:
+ INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
+ You can also call nextval() and use that value in the INSERT, or call
+ currval() after the INSERT.
+
4.11.3) Doesn't currval() lead to a race condition with other users?
No. currval() returns the current value assigned by your session, not