gpt4 book ai didi

postgresql - 删除表时保留从 BIGSERIAL 创建的序列

转载 作者:行者123 更新时间:2023-11-29 12:33:13 28 4
gpt4 key购买 nike

我有一个使用以下 SQL 创建的 postgres 表:

CREATE TABLE mytable (
mytable_id BIGSERIAL NOT NULL,
mytable_char VARCHAR(8) NOT NULL
)

这将创建表以及隐式 mytable_mytable_id_seq 序列。

现在,在创建 1.000.000 条记录后,我想将此表拆分为分区表(使用继承)。因为我从其他表链接引用主表,所以我想在新的子表中继续使用原始表中的 ID,并继续使用序列。

但是,如果我执行 DROP TABLE mytable,它也会删除序列。如何在删除表格时保持顺序?

最佳答案

需要先解除列与序列的关联:

alter sequence mytable_mytable_id_seq owned by none;

如果您现在删除表格,序列将不会被删除。

详细信息在手册中:http://www.postgresql.org/docs/current/static/sql-altersequence.html

另一种方法是创建一个新序列并将其设置为现有序列的值:

create sequence part_seq;
select setval('part_seq', (select nextval('mytable_mytable_id_seq'), false);

关于postgresql - 删除表时保留从 BIGSERIAL 创建的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28172040/

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