postgresql – postgres autoincrement没有更新显式id插入

我在postgres中有以下表格:
CREATE TABLE "test" (
    "id" serial NOT NULL PRIMARY KEY,"value" text
)

我在做以下插入:

insert into test (id,value) values (1,'alpha')
insert into test (id,value) values (2,'beta')

insert into test (value) values ('gamma')

在前两个插入中,我明确提到了id。但是在这种情况下,表的自动增量指针不会更新。因此在第三个插入我得到错误

ERROR:  duplicate key value violates unique constraint "test_pkey"
DETAIL:  Key (id)=(1) already exists.

我从来没有在MyISAM和INNODB引擎中的MysqL中遇到这个问题。显而易见,MysqL总是根据最大行ID来更新autoincrement指针。

postgres中的这个问题的解决方法是什么?我需要它,因为我想对我的表中的一些ids进行更严格的控制。

更新:
我需要它,因为一些值我需要一个固定的id。对于其他新的条目,我不介意创建新的条目。

我认为只要我明确地插入ids,可能手动将nextval指针递增到max(id)1。但我不知道该怎么做

这就是它应该如何工作 – 仅当系统需要此列的值并且尚未提供的值时,才会调用next_val(‘test_id_seq’)。如果您提供值,则不执行此类呼叫,因此序列不会“更新”。

您可以使用明确提供的值在上次插入之后手动输入序列值为setting

SELECT setval('test_id_seq',(SELECT MAX(id) from "test"));

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...