View a markdown version of this page

ALTER TABLE - Amazon Aurora DSQL

ALTER TABLE

ALTER TABLE 更改表的定义。

支持的语法

ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] action [, ... ] ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] RENAME [ COLUMN ] column_name TO new_column_name ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] RENAME CONSTRAINT constraint_name TO new_constraint_name ALTER TABLE [ IF EXISTS ] name RENAME TO new_name ALTER TABLE [ IF EXISTS ] name SET SCHEMA new_schema where action is one of: ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type [ STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ] ALTER [ COLUMN ] column_name SET DEFAULT expression ALTER [ COLUMN ] column_name DROP DEFAULT ALTER [ COLUMN ] column_name DROP NOT NULL ALTER [ COLUMN ] column_name DROP EXPRESSION [ IF EXISTS ] ALTER [ COLUMN ] column_name ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] ALTER [ COLUMN ] column_name { SET GENERATED { ALWAYS | BY DEFAULT } | SET sequence_option | RESTART [ [ WITH ] restart ] } [...] ALTER [ COLUMN ] column_name DROP IDENTITY [ IF EXISTS ] ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ADD table_constraint_using_index DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } and table_constraint_using_index is: [ CONSTRAINT constraint_name ] UNIQUE USING INDEX index_name

说明

ADD [ COLUMN ] [ IF NOT EXISTS ]

此表单使用与 CREATE TABLE 相同的语法向表中添加一个新列。如果指定 IF NOT EXISTS 并且具有此名称的列已经存在,将不会引发任何错误。

SET/DROP DEFAULT

这些表单为列设置或移除默认值(其中,移除等同于将默认值设置为 NULL)。新的默认值将仅适用于后续 INSERTUPDATE 命令;它不会导致表中已有的行发生变化。

DROP NOT NULL

此表单将列更改为支持 null 值。

DROP EXPRESSION [ IF EXISTS ]

此表单将存储的生成列转换为普通的基列。列中的现有数据会保留,但未来的更改将不再应用生成表达式。如果指定了 DROP EXPRESSION IF EXISTS 并且该列不是生成的列,则不会引发任何错误。在这种情况下,将改为发出通知。

ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY
SET GENERATED { ALWAYS | BY DEFAULT }
DROP IDENTITY [ IF EXISTS ]

这些格式更改列是否为标识列,或更改现有标识列的生成属性。有关详细信息,请参阅CREATE TABLE。比如 SET DEFAULT,这些格式只影响后续 INSERTUPDATE 命令的行为;它们不会导致表中已有的行发生变化。

sequence_optionALTER SEQUENCE(如 INCREMENT BY)支持的选项。这些格式更改现有标识列所基于的序列。

注意

Amazon Aurora DSQL 在使用 ADD GENERATED AS IDENTITY 时需要一个显式 CACHE 值。此外,标识列仅在 bigint 列上受支持。

使用标识列时,应谨慎考虑缓存值。有关更多信息,请参阅 CREATE SEQUENCE 页面上的“重要提示”标注。

有关如何根据工作负载模式以最佳方式使用标识列的指导,请参阅使用序列和标识列

SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT }

此形式用于设置列的存储模式。有关可用的存储模式的详细信息,请参阅 CREATE TABLE 页面上的存储模式

ADD table_constraint_using_index

此格式基于现有的唯一索引,向表添加新的 UNIQUE 约束。索引的所有列都将包含在约束中。

索引必须处于 VALID 状态;不支持使用当前正在构建中的索引来添加唯一约束。

如果提供了约束名称,则索引将被重命名以匹配约束名称。否则,约束的命名将与索引相同。

执行此命令后,索引由约束“拥有”,这种拥有方式就像索引是由常规 CREATE UNIQUE INDEX ASYNC 命令构建一样。特别的地方在于,删除约束也会使索引消失。

DROP CONSTRAINT [ IF EXISTS ]

此表单会删除表上的指定约束以及该约束下的所有索引。如果指定了 IF EXISTS 但该约束不存在,则不会引发任何错误。在这种情况下,将改为发出通知。

重要

目前,CREATE TABLE 表达式支持添加新约束。ALTER TABLE ADD CONSTRAINT(对 DROP CONSTRAINT 的镜像支持)尚不可用。如果您对这项即将推出的功能有任何疑问,请联系 AWS Support 或直接通过 DSQL Public Discord 联系我们。

OWNER TO

此表单将表的所有者更改为指定的用户。

RENAME

RENAME 表单更改表的名称、表中单个列的名称或表中约束的名称。重命名具有基础索引的约束时,也会重命名索引。对存储的数据没有任何影响。

SET SCHEMA

此表单将表移到另一个架构中。表列所拥有的关联索引、约束和序列也会移动。

参数

IF EXISTS

如果表不存在,不引发错误。在这种情况下,将发出通知。

name

要更改的现有表的名称(可选择架构限定)。如果在表名之前指定了 ONLY,则仅更改该表。如果未指定 ONLY,则会更改该表及其所有子代表(如果有)。(可选)可以在表名后指定 *,以显式表示包含子代表。

column_name

新列或现有列的名称。

new_column_name

现有列的新名称。

new_name

表的新名称。

data_type

新列的数据类型。

constraint_name

新约束或现有约束的名称。

CASCADE

自动删除依赖于已删除约束的对象(例如,引用该列的视图),进而删除依赖于这些对象的所有对象。

RESTRICT

如果存在任何依赖对象,则拒绝删除约束。这是默认行为。

new_owner

表的新所有者的用户名。

new_schema

表将移动到的架构的名称。