如何在分区表中添加新列的PostgreSQL

10

我使用PostgreSQL 10的声明式分区功能,基于一个列值创建了一个带有多个分区的新主表。

如何向表中添加新列?

1个回答

21
您只需要将该列添加到基础表中即可:
alter table master_table add new_column integer;

所有的分区将自动获得该新列。


文档中有关于这个的说明吗? - moi
尽管文档似乎表明这是不可能的,但我刚刚验证了它确实可行。向主表添加列确实在分区中创建了一列。参考文献中说:“使用CREATE TABLE创建分区时无法指定列,也无法使用ALTER TABLE在事后向分区添加列。”(https://www.postgresql.org/docs/12/ddl-partitioning.html) - matmat
删除列同样有效;只需使用 ALTER TABLE table_name DROP COLUMN column_name 更改基础表,所有分区表都将反映出更改。 - Suvro Choudhury
3
请注意,文档所讨论的是“分区”,而不是父表。你无法仅更改一个分区的布局,因为它必须与父表匹配。然而,文档在修改父表方面可能需要更加明确;显然作者假设读者将分区表视为普通表(在 ALTER TABLE 文档中明确提到了在分区表上运行不同的操作,但并没有明确指出其他操作应按预期工作——这是应该的)。 - scravy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接