From cd2cf74584b3938cb79dae83a87bf52d0e6ee75f Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Tue, 9 Oct 2007 19:55:36 +0000 Subject: Update sequence FAQ items, per suggestion from Pavel Stehule. --- doc/src/FAQ/FAQ.html | 40 +++++++++++++++------------------------- 1 file changed, 15 insertions(+), 25 deletions(-) (limited to 'doc/src') diff --git a/doc/src/FAQ/FAQ.html b/doc/src/FAQ/FAQ.html index 410c2c6f551..3a3235eaa6b 100644 --- a/doc/src/FAQ/FAQ.html +++ b/doc/src/FAQ/FAQ.html @@ -10,7 +10,7 @@ alink="#0000ff">
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) @@ -916,38 +916,28 @@ length ); - 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.
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')"); -+
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:
- You would then also have the new value stored innew_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')"); + 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. +