Обсуждение: issue with SELECT settval(..);
Hi,
I would like to auto increment my sequence when i'm going to insert a new record into my table.
for that i wanted to use :
insert into immense.statususer (statususer_id, statususer_type) values (SELECT nextval( 'statususer_statususer_id_seq' ),'customer');
however, i get an error message in pgAdmin III, as following :
ERROR: syntax error at or near "SELECT" at character 168
i do not under because if I run SELECT nextval( 'statususer_statususer_id_seq' ) alone, it works perfectly and increment the sequence.
moreover, everything regarding the table is correct. so where is the problem ?
thanks a lot,
--
Alain
------------------------------------
Windows XP SP2
PostgreSQL 8.1.4
Apache 2.0.58
PHP 5
I would like to auto increment my sequence when i'm going to insert a new record into my table.
for that i wanted to use :
insert into immense.statususer (statususer_id, statususer_type) values (SELECT nextval( 'statususer_statususer_id_seq' ),'customer');
however, i get an error message in pgAdmin III, as following :
ERROR: syntax error at or near "SELECT" at character 168
i do not under because if I run SELECT nextval( 'statususer_statususer_id_seq' ) alone, it works perfectly and increment the sequence.
moreover, everything regarding the table is correct. so where is the problem ?
thanks a lot,
--
Alain
------------------------------------
Windows XP SP2
PostgreSQL 8.1.4
Apache 2.0.58
PHP 5
Alain Roger wrote: > insert into immense.statususer (statususer_id, statususer_type) values > (SELECT nextval( 'statususer_statususer_id_seq' ),'customer'); The correct syntax would be: insert into immense.statususer (statususer_id, statususer_type) values ((SELECT nextval( 'statususer_statususer_id_seq' )),'customer'); The sub-select must be put in parentheses. However, the much simpler statement insert into immense.statususer (statususer_id, statususer_type) values (nextval( 'statususer_statususer_id_seq' ),'customer'); will do the same without a sub-select. Regards Christian -- Deriva GmbH Tel.: +49 551 489500-42 Financial IT and Consulting Fax: +49 551 489500-91 Hans-Böckler-Straße 2 http://www.deriva.de D-37079 Göttingen Deriva CA Certificate: http://www.deriva.de/deriva-ca.cer
thanks a lot Christian.
--
Alain
------------------------------------
Windows XP SP2
PostgreSQL 8.1.4
Apache 2.0.58
PHP 5
On 3/18/07, Christian Schröder <cs@deriva.de> wrote:
Alain Roger wrote:
> insert into immense.statususer (statususer_id, statususer_type) values
> (SELECT nextval( 'statususer_statususer_id_seq' ),'customer');
The correct syntax would be:
insert into immense.statususer (statususer_id, statususer_type) values
((SELECT nextval( 'statususer_statususer_id_seq' )),'customer');
The sub-select must be put in parentheses. However, the much simpler
statement
insert into immense.statususer (statususer_id, statususer_type) values
(nextval( 'statususer_statususer_id_seq' ),'customer');
will do the same without a sub-select.
Regards
Christian
--
Deriva GmbH Tel.: +49 551 489500-42
Financial IT and Consulting Fax: +49 551 489500-91
Hans-Böckler-Straße 2 http://www.deriva.de
D-37079 Göttingen
Deriva CA Certificate: http://www.deriva.de/deriva-ca.cer
---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly
--
Alain
------------------------------------
Windows XP SP2
PostgreSQL 8.1.4
Apache 2.0.58
PHP 5
Christian Schröder wrote: > Alain Roger wrote: >> insert into immense.statususer (statususer_id, statususer_type) values >> (SELECT nextval( 'statususer_statususer_id_seq' ),'customer'); > The correct syntax would be: > > insert into immense.statususer (statususer_id, statususer_type) values > ((SELECT nextval( 'statususer_statususer_id_seq' )),'customer'); Well, that original query was almost right, it just didn't need the values statement and the parenthesis: insert into immense.statususer (statususer_id, statususer_type) SELECT nextval('statususer_statususer_id_seq'), 'customer'; But as mentioned; using nextval directly is better. -- Alban Hertroys alban@magproductions.nl magproductions b.v. T: ++31(0)534346874 F: ++31(0)534346876 M: I: www.magproductions.nl A: Postbus 416 7500 AK Enschede // Integrate Your World //