💡
原文英文,约1000词,阅读约需4分钟。
📝
内容提要
分区表是PostgreSQL的重要特性,但ALTER TABLE在分区表上的行为常常令人困惑。本文系统总结了ALTER TABLE在分区表上的15种子命令行为,帮助用户理解这些命令对现有和未来分区的影响。
🎯
关键要点
- 分区表是PostgreSQL的重要特性,但ALTER TABLE在分区表上的行为常常令人困惑。
- 本文总结了ALTER TABLE在分区表上的15种子命令行为,帮助用户理解这些命令的影响。
- PostgreSQL社区认为ALTER TABLE在分区表上的行为不一致,但实际上规则是存在的,只是分散在不同的地方。
- 评估每个ALTER TABLE子命令时使用了四个标准:传播、继承、ONLY的影响和独立性。
- ALTER TABLE子命令可以分为15个类别,每个类别代表一种独特的行为模式。
- C1类别:仅限父表的结构性更改,不能在分区上使用。
- C2类别:从父表传播更改,未来的分区会继承这些更改。
- C3类别:传播更改,但未来的分区不继承。
- C4类别:父表和分区完全独立,允许不同的值。
- C5类别:独立,但未来的分区会继承父表的设置。
- C6类别:强制传播,ONLY被拒绝。
- C7类别:仅限叶子分区的命令,不能在分区表上使用。
- C8类别:父表范围内,但分区可覆盖的命令。
- C9类别:条件继承,取决于父表的值。
- C10类别:没有传播,但未来的分区会继承。
- C11类别:在父表上无操作的命令。
- C12类别:不支持分区表的命令。
- C13类别:仅限父表的元数据绑定命令。
- C14类别:被视为普通表的命令,没有特殊行为。
- C15类别:分区管理命令,操作分区结构而非属性。
- 在PostgreSQL文档明确描述ALTER TABLE在分区表上的行为之前,这种参考模型是必要的。
🏷️
标签
➡️