gpt4 book ai didi

sql - 自动递增失败

转载 作者:行者123 更新时间:2023-11-29 12:10:34 26 4
gpt4 key购买 nike

我有一个在下面的代码中创建的表:

CREATE TABLE "salesorderdetail" (
"salesorderid" SERIAL NOT NULL ,
"salesorderdetailid" SERIAL PRIMARY KEY,
"orderqty" int NOT NULL,
"productid" int NOT NULL,
"unitprice" float NOT NULL,
"unitpricediscount" float NOT NULL,
"linetotal" float NOT NULL
) WITH (
OIDS=FALSE
);

此外,我将记录从 csv 文件导入到表中。我想向表中插入一条新记录,但一直出现此错误

ERROR: duplicate key value violates unique constraint "salesorderdetail_pkey" DETAIL: Key (salesorderdetailid)=(2) already exists. ********** Error **********

ERROR: duplicate key value violates unique constraint "salesorderdetail_pkey" SQL state: 23505 Detail: Key (salesorderdetailid)=(2) already exists.

我试图通过执行以下查询来更改表的顺序。

SELECT MAX("salesorderdetailid") FROM "salesorderdetail"; --Output is 75123
CREATE SEQUENCE user_id_seq;
ALTER SEQUENCE user_id_seq RESTART WITH 75124; --Hence I manually enter 75124

然后我再次尝试插入查询:

INSERT INTO "salesorderdetail" (orderqty,productid,unitprice,unitpricediscount,linetotal) values (1,1,8.00,0,8.00);

我仍然得到这个错误!我还注意到,每次我尝试执行插入查询时,重复键值会自动增加 3、4、5、6 等。

最佳答案

(首先,很抱歉没有发表评论而是回答 - 我还没有足够的分数发表评论)

这是一个有趣的问题。我在我自己的 PostGres 沙箱实例上执行了您的所有代码,并且在模式中插入任何新数据时没有遇到任何问题。

我确实注意到这个代码块有问题

SELECT MAX("salesorderdetailid") FROM "salesorderdetail"; --Output is 75123
CREATE SEQUENCE user_id_seq;
ALTER SEQUENCE user_id_seq RESTART WITH 75124; --Hence I manually enter 75124

在我自己的实例中,序列默认名称默认为 salesorderdetail_salesorderdetailid_seq。除非您明确更改它,否则我猜测您的 CSV 内容中的某些内容(似乎不太可能)或上面查询中的序列命名是问题所在。有趣的是,当我尝试重新启动这个不存在的序列时,PG 没有返回任何错误。

所以 - 试试这个

alter sequence salesorderdetail_salesorderdetailid_seq RESTART with 75124;

关于sql - 自动递增失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37951140/

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