如何使用node-postgres按顺序使用nextval

时间:2017-04-09 15:44:32

标签: postgresql node-postgres

我的表postgres数据库有一个自动增量键。

在常规的postgres sql中我可以:

INSERT INTO CITY(ID,NAME) VALUES(nextval('city_sequence_name'),'my first city');

如何使用node-postgres执行此操作?到现在为止,我已经尝试过:

myConnection.query('INSERT INTO city(id,name) VALUES ($1,$2)', ['nextval("city_sequence_name")','my first city'],callback);

但错误规则:

  

erro {error:sintaxe deentradaéinválidaparainteger:“nextval(”city_sequence_name“)”

2 个答案:

答案 0 :(得分:1)

所以,我能够确定这种情况的解决方案:

connection.query("INSERT INTO city(id,name) VALUES(nextval('sequence_name'),$1)", ['first city'],callback);

答案 1 :(得分:0)

这是一种不好的做法。相反,只需将列设置为DEFAULT nextval()或使用serial类型。

# CREATE TABLE city ( id serial PRIMARY KEY, name text );
CREATE TABLE
# \d city
                         Table "public.city"
 Column |  Type   |                     Modifiers                     
--------+---------+---------------------------------------------------
 id     | integer | not null default nextval('city_id_seq'::regclass)
 name   | text    | 
Indexes:
    "city_pkey" PRIMARY KEY, btree (id)

# INSERT INTO city (name) VALUES ('Houston'), ('Austin');
INSERT 0 2
test=# TABLE city;
 id |  name   
----+---------
  1 | Houston
  2 | Austin
(2 rows)