ALTER TABLE

用于更改表定义的 SQL 命令

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
    • 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 constraint 中(提交 722bf701
    • ALTER TABLE VALIDATE constraint 语法添加(提交 722bf701
    • ALTER TABLE name {OF type | NOT OF type} 语法添加(提交 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”的任何评论、建议或更正 此处