gpt4 book ai didi

java - postgresql 序列相关问题 "id is getting repeated"?

转载 作者:行者123 更新时间:2023-12-02 09:24:46 25 4
gpt4 key购买 nike

我有一个名为document的表及其序列document_seq。我在我的项目中使用多个堆栈( Node 和 Play Framework 以及 Postgres 等数据库)。假设我的文档表的最后一个 id 是 119,然后我尝试从 Node 插入一行,然后它变成 120 (document_id) 然后我尝试通过 play 框架输入文档表,那么它应该生成 121,但不是这个,而是在文档中插入120作为列的id,因此文档表产生重复的id错误。当我在插入数据后检查序列时,它比上一个值增加了 +20 或更多时间。

对于这个问题

  1. 我尝试通过创建触发器来重置sequence_id,它将使用最后一个document_id重置序列。

  2. 还尝试删除 document_seq 并使 document_id 序列化,但出现序列错误。

最佳答案

您不需要使用触发器。在 PostgreSQL 中,您可以使用特殊数据类型 serial,如 documentation 中所述。 .

如果您创建一个如下表:

CREATE TABLE document (
id SERIAL,
text title
);

您可以非常轻松地插入数据,如下所示:

insert into documents (title) values('text');

并且序列工作正常。 serial 是一个快捷方式或宏,被翻译为:

CREATE SEQUENCE document_id_seq AS integer;
CREATE TABLE document (
id integer NOT NULL DEFAULT nextval('document_id_seq'),
text title
);
ALTER SEQUENCE document_id_seq OWNED BY document.id;

您也可以使用上述命令。在列定义的默认部分中使用 nextval 非常重要。 sequence 函数 nextval 一步读取并增加序列。

关于java - postgresql 序列相关问题 "id is getting repeated"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58411725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com