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 ADD table_constraint_using_index ALTER [ COLUMN ] column_name { SET GENERATED { ALWAYS | BY DEFAULT } | SET sequence_option | RESTART [ [ WITH ] restart ] } [...] ALTER [ COLUMN ] column_name DROP IDENTITY [ IF EXISTS ] OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } and table_constraint_using_index is: [ CONSTRAINT constraint_name ] UNIQUE USING INDEX index_name
标识列操作
SET GENERATED { ALWAYS | BY DEFAULT }/SET/sequence_optionRESTART-
这些格式更改列是否为标识列,或更改现有标识列的生成属性。有关详细信息,请参阅 CREATE TABLE。比如
SET DEFAULT,这些格式只影响后续INSERT和UPDATE命令的行为;它们不会导致表中已有的行发生变化。sequence_option是 ALTER SEQUENCE(如INCREMENT BY)支持的选项。这些格式更改现有标识列所基于的序列。 DROP IDENTITY [ IF EXISTS ]-
此格式从列中移除标识属性。如果指定了
DROP IDENTITY IF EXISTS并且该列不是标识列,则不会引发任何错误。在这种情况下,将改为发出通知。
添加约束操作
ADDtable_constraint_using_index-
此格式基于现有的唯一索引,向表添加新的
UNIQUE约束。索引的所有列都将包含在约束中。索引必须处于
VALID状态;不支持使用当前正在构建中的索引来添加唯一约束。如果提供了约束名称,则索引将被重命名以匹配约束名称。否则,约束的命名将与索引相同。
执行此命令后,索引由约束“拥有”,这种拥有方式就像索引是由常规
CREATE UNIQUE INDEX ASYNC命令构建一样。特别的地方在于,删除约束也会使索引消失。