ALTER TABLE

用于更改表定义的 SQL 命令

ALTER TABLE 是一个 DDL 命令,用于更改表的定义

ALTER TABLE 出现在每个 PostgreSQL 版本中。

更改历史记录

注意:此列表可能不完整,特别是对于 PostgreSQL 9.0 之前的版本。.

  • PostgreSQL 18
  • 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) 已回退(提交 3890d90c
    • ALTER TABLE ... SPLIT PARTITION ... 语法已添加(提交 87c21bb9) 已回退(提交 3890d90c
  • PostgreSQL 16
    • SET STORAGE DEFAULT 语法已添加(提交 b9424d01
  • PostgreSQL 15
    • ALTER TABLE ... SET ACCESS METHOD 语法已添加(提交 b0483263
    • 外键 ON DELETE SET ... 操作可以提供显式列列表(提交 d6f96ed9
    • UNIQUE [ NULLS [ NOT ] DISTINCT ] 语法已添加(提交 94aa7cc5
  • PostgreSQL 14
    • ALTER TABLE ... DETACH PARTITION ... CONCURRENTLY 语法已添加(提交 71f4c8c6
    • ALTER TABLE ... ALTER [ COLUMN ] ... SET COMPRESSION 语法已添加(提交 bbe0a81d
    • ALTER TABLE ... OWNER TO CURRENT_ROLE 语法已添加(提交 45b98057
  • PostgreSQL 13
    • ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSION 命令已添加,用于将 生成列 转换为普通列(提交 f595117e
    • 删除了对使用预 PostgreSQL 7.3 语法的外键约束的支持(提交 e58a5997
  • PostgreSQL 12
    • ALTER TABLE ... ATTACH PARTITION 现在以降低的锁定要求执行(提交 898e5e32
    • ALTER TABLE ... SET DATA TYPE 在会话时区为 UTC 时,在 timestamptimestamptz 之间更改时,避免表重写(提交 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
    • ALTER TABLE ... ADD COLUMN ... IF NOT EXISTS 已添加(提交 2cd40adb
    • ALTER TABLE ... SET (fillfactor = ...) 可以以降低的锁定级别执行(提交 fcb4bfdd
    • ALTER TABLE ... SET (autovacuum* = ...) 可以以降低的锁定级别执行(提交 47167b79
  • PostgreSQL 9.5
    • ALTER TABLE ... (ENABLE|DISABLE) ROW SECURITY 已添加(提交 491c029d
    • ALTER TABLE ... SET (LOGGED|UNLOGGED) 已添加(提交 f41872d0
    • ALTER TABLE IF EXISTS 支持添加到 ALTER TABLE ... RENAME CONSTRAINT(提交 1d8198bb
    • ALTER TABLE 现在将执行 table_rewrite 事件触发器(提交 618c9430
  • PostgreSQL 9.4
    • ALTER TABLE ALL IN TABLESPACE ... 已添加(初始提交 fbe19ee3;提交 d9b2bc45 建立了此语法)
    • ALTER TABLE ... REPLICA IDENTITY ... 语法已添加(初始提交 07cacba9
    • 以下 ALTER TABLE 命令修改为以较低的锁定级别执行(提交 e5550d5f
      • ALTER COLUMN SET STATISTICS
      • ALTER COLUMN SET (...)
      • ALTER COLUMN RESET (...)
      • CLUSTER ON
      • SET WITHOUT CLUSTER
      • VALIDATE CONSTRAINT
  • PostgreSQL 9.2
    • ALTER TABLE [ IF EXISTS] ... RENAME CONSTRAINT ... TO ... 语法已添加(提交 39d74e34
  • PostgreSQL 9.1
    • NOT VALID 选项已添加到 ALTER TABLE ... ADD 约束 (提交 722bf701)
    • ALTER TABLE VALIDATE 约束 语法已添加 (提交 722bf701)
    • ALTER TABLE 名称 {OF 类型 | NOT OF 类型} 语法已添加 (提交 68739ba8)
    • 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
    • ALTER TABLE ... SET SCHEMA ... 语法已添加 (提交 35508d1c)
    • ALTER TABLE ... { ENABLE | DISABLE } TRIGGER 语法已添加 (提交 188c7c8c)
  • PostgreSQL 8.0
    • ALTER TABLE ... ADD COLUMN 带有默认值和 NOT NULL 约束 (提交 077db40f)
    • ALTER TABLE ... SET TABLESPACE ... 语法已添加 (提交 af4de814)
    • ALTER TABLE ... SET WITHOUT CLUSTER 语法已添加 (提交 1cdc5872)
    • 可以更改列类型 (提交 077db40f)
    • 单个 ALTER TABLE 命令中支持多个 ALTER 操作 (提交 077db40f)
  • 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

分类

DDLSQL 命令

参见

CREATE TABLEDROP TABLEALTER FOREIGN TABLE

反馈

提交关于 "ALTER TABLE" 的任何评论、建议或更正 此处