kip*_*oft 2 postgresql sequence
我有一个linelevelpmts带有列seq(Int4)的表,它将用作序列.
我知道我可以删除该列并将其重新创建为类型序列,但是我可以修改现有列以用作序列.
ALTER TABLE "public"."linelevelpmts" ALTER COLUMN "seq" SET DEFAULT nextval('linelevelpmts_seq_seq'::regclass);
此代码生成错误:Relation linelevelpmts_seq_seq不存在.
a_h*_*ame 12
此代码生成错误:Relation linelevelpmts_seq_seq不存在.
那么你需要先创建你想要用作默认值的序列:
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;
编辑
伊戈尔的评论是一个很好的一个:如果你已经列中的值seq,你应该调整序列的起始值:
select setval('linelevelpmts_seq_seq', (select max(seq) from linelevelpmts));
| 归档时间: | 
 | 
| 查看次数: | 5236 次 | 
| 最近记录: |