gpt4 book ai didi

postgresql - 为什么插入主键不影响顺序?

转载 作者:行者123 更新时间:2023-11-29 14:15:18 24 4
gpt4 key购买 nike

当插入带有隐式主键的行时,它似乎不影响主键顺序,然后,当尝试不使用 PK 插入时,它失败了:

create table testtable(
id serial primary key,
data integer not null
);

插入 PK(例如数据迁移):

insert into testtable ( id, data ) values ( 1,2 ), ( 2,2 ), ( 3,2 ), ( 4,2 );
INSERT 0 4

插入新数据,没有 PK:

insert into testtable ( data ) values ( 4 ), ( 5 ), ( 6 ), ( 7 );
ERROR: duplicate key value violates unique constraint "testtable_pkey"
DETAIL: Key (id)=(1) already exists.

为什么在第一个 INSERT 之后没有在最大值上设置序列?我应该在使用 PK 插入后控制序列吗?有没有办法让sequence自动上正轨?

最佳答案

此行为的原因是序列是在列的 DEFAULT 值中访问的,而显式插入列时不使用默认值。

我能想到的实现您想要的唯一方法是在插入后修改序列的触发器,但我认为这将是一个缓慢而可怕的解决方案。

继续进行的最佳方法是在完成迁移后调整一次顺序。

关于postgresql - 为什么插入主键不影响顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50791294/

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