gpt4 book ai didi

postgresql - 你能在 Postgres 中已经存在的列上创建一个序列吗

转载 作者:行者123 更新时间:2023-11-29 11:52:29 25 4
gpt4 key购买 nike

我有一个表linelevelpmts,其中有一列seq (Int4),它被用作一个序列。

我知道我可以删除列并将其重新创建为序列类型,但我可以修改现有列以用作序列吗。

ALTER TABLE "public"."linelevelpmts" ALTER COLUMN "seq" SET DEFAULT nextval('linelevelpmts_seq_seq'::regclass);

此代码生成错误:关系 linelevelpmts_seq_seq 不存在。

最佳答案

This code generates an error: Relation linelevelpmts_seq_seq does not exist.

那么您首先需要创建要用于默认值的序列:

create sequence linelevelpmts_seq_seq;
ALTER TABLE public.linelevelpmts
ALTER COLUMN seq SET DEFAULT nextval('linelevelpmts_seq_seq'::regclass);

如果您想要与创建为 serial 相同的效果,您还需要更改序列的“所有者”:

alter sequence linelevelpmts_seq_seq owned by linelevelpmts.seq;

编辑

Igor 的评论很好:如果您在 seq 列中已有值,您应该调整序列的起始值:

select setval('linelevelpmts_seq_seq', (select max(seq) from linelevelpmts));

关于postgresql - 你能在 Postgres 中已经存在的列上创建一个序列吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25972630/

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