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

前端之家收集整理的这篇文章主要介绍了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"));
原文链接:https://www.f2er.com/postgresql/193225.html

猜你在找的Postgre SQL相关文章