如何用约束和索引交换postgres数据库中的两个表?

时间:2019-06-26 10:28:46

标签: postgresql

我想维护两个主表。 API服务从主表为客户端提供服务。当我不得不重新填充表时,我将其写入新表并像下面那样更改辅助和主数据库。

BEGIN;

DROP TABLE "public.table_secondary"
ALTER TABLE "public.table_primary" RENAME TO "public.table_secondary";
ALTER TABLE "public.table_new" RENAME TO "public.table_primary";


COMMIT;

这样,当重新填充表时,API服务不会关闭。 我的问题是,table_primary和table_secondary使用的约束,索引和序列发生了什么。 对于table_primary,在创建过程中使用的其他DDL语句是:

CREATE SEQUENCE public.seq1

ALTER TABLE public.table_primary ADD COLUMN id bigint NOT NULL DEFAULT nextval('seq1');

ALTER TABLE ONLY public.table_primary ADD CONSTRAINT pkeyconstraint PRIMARY KEY (id);

ALTER TABLE public.table_primary  ADD CONSTRAINT uniqueidfk FOREIGN KEY (uniqueid) REFERENCES externaltable2 (id);

CREATE INDEX IF NOT EXISTS index ON table_primary (uniqueid);

交换表时应如何处理其他约束和索引?

感谢您的回复

0 个答案:

没有答案