如何在PostgreSQL中设置串口类型的值?

时间:2017-10-30 08:49:04

标签: sql postgresql

我的表中有一个主键,如下所示:

CREATE TABLE a (
    id serial NOT NULL,
    valuea citext NOT NULL,
    CONSTRAINT a_pkey PRIMARY KEY (id),
);

表格包含以下行:

id value
198  b
199  j

偶然我做了这个插入

Insert Into a(id,valuea) values (200,'hello');

现在,当我尝试以正确的方式进行另一次插入时:

Insert Into a(valuea) values ('b');

我希望它插入(201,b)但是由于上一次手动插入,串行计数器不知道200已被使用。

我明白了:

  

错误:重复键值违反了唯一约束   " a_pkey" DETAIL:Key(id)=(200)已经存在。

我理解这个错误..基本上是因为我的上一次插入没有使用Serial,因此它的计数器没有上升。

我不知道如何解决它?

如何告诉串口计数器从201开始?

2 个答案:

答案 0 :(得分:2)

您需要找到序列名称,通常类似于<your table>_id_seq并执行:

ALTER SEQUENCE a_id_seq INCREMENT BY 1;

答案 1 :(得分:2)

当您创建serial键时,Postgres会创建一个序列,用于生成下一个值。

只需找到该序列并将其START值修改为例如201。

SELECT setval(<name of the sequence>, 201, true);