ALTER TABLE
是用于更改表定义的 DDL 命令
ALTER TABLE
存在于每个版本的 PostgreSQL 中。
更改历史记录
注意:此列表可能不完整,特别是对于 PostgreSQL 9.0 之前的版本.
- PostgreSQL 17
CONSTRAINT ... NOT NULL ...
语法添加(提交 b0e96f31)ALTER TABLE ... SET EXPRESSION AS ...
语法添加(提交 5d06e99a)ALTER TABLE ... SET STATISTICS DEFAULT
语法添加(提交 4f622503)ALTER TABLE ... SET ACCESS METHOD DEFAULT
语法添加(提交 d61a6cad)ALTER TABLE ... MERGE PARTITIONS ...
语法添加(提交 1adf16b8) 撤销(提交 3890d90c1508125729ed20038d90513694fc3a7b)ALTER TABLE ... SPLIT PARTITION ...
语法添加(提交 87c21bb9) 撤销(提交 3890d90c1508125729ed20038d90513694fc3a7b)
- PostgreSQL 16
SET STORAGE DEFAULT
语法添加(提交 b9424d01)
- PostgreSQL 15
- PostgreSQL 14
- PostgreSQL 13
ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSION
命令添加,用于将 生成列 转换为普通列(提交 f595117e)- 删除对使用预 PostgreSQL 7.3 语法的外键约束的支持(提交 e58a5997)
- PostgreSQL 12
ALTER TABLE ... ATTACH PARTITION
现在以降低的锁定要求执行(提交 898e5e32)
在会话时区为 UTC 时,在ALTER TABLE ... SET DATA TYPE
timestamp
和timestamptz
之间更改时避免表重写(提交 3c592630)ALTER TABLE ... SET NOT NULL
可以避免不必要的表扫描(提交 bbb96c37)ALTER TABLE
现在可以在 系统目录 表上干净地执行(提交 590a8702)GENERATED ALWAYS AS ( ... ) STORED
语法添加(提交 fc22b662)
- PostgreSQL 11
ALTER TABLE ... ADD COLUMN
具有非空常量默认值不再需要表重写(初始提交 16828d5c)
- PostgreSQL 10
ALTER TABLE ... ADD PRIMARY KEY
将任何NOT NULL
更改传播到继承子表(提交 c30f1770)
- PostgreSQL 9.6
- PostgreSQL 9.5
- PostgreSQL 9.4
- PostgreSQL 9.2
ALTER TABLE [ IF EXISTS] ... RENAME CONSTRAINT ... TO ...
语法添加(提交 39d74e34)
- PostgreSQL 9.1
NOT VALID
选项添加到ALTER TABLE ... ADD constraint
中(提交 722bf701)ALTER TABLE VALIDATE constraint
语法添加(提交 722bf701)ALTER TABLE name {OF type | NOT OF
语法添加(提交 68739ba8)type
}ALTER TABLE ... ADD { UNIQUE | PRIMARY KEY } USING INDEX
语法添加(提交 88452d5b)ALTER TABLE ... SET DATA TYPE ...
对于某些数据类型组合不再需要表重写(提交 d31e2a49)
- PostgreSQL 8.4
ALTER TABLE ... ALTER COLUMN ... SET DATA TYPE
语法添加(提交 1471e384)
- PostgreSQL 8.2
ALTER TABLE ... [ NO ] INHERIT
语法添加(提交 8c092781)
- PostgreSQL 8.1
- PostgreSQL 8.0
- PostgreSQL 7.4
- 添加了
ALTER TABLE ... CLUSTER ON ...
语法(提交 432b9b0f)
- 添加了
- PostgreSQL 7.3
- 添加了
ALTER TABLE ... SET STORAGE ...
语法(提交 03194432)
- 添加了
- PostgreSQL 7.0
- 添加了
ALTER TABLE ... DROP COLUMN ...
(初始提交 fa5400c0)
- 添加了
示例
ALTER TABLE
的基本用法示例
postgres=# CREATE TABLE foo (id int); CREATE TABLE postgres=# ALTER TABLE foo RENAME TO bar; ALTER TABLE
参考文献
- PostgreSQL 文档: ALTER TABLE
有用链接
- PostgreSQL:正确使用 ALTER TABLE … ADD COLUMN … - Hans-Jürgen Schönig / CyberTec 于 2022 年 8 月发布的博文