数据仓库服务 GAUSSDB(DWS)-ALTER TABLE:参数说明
参数说明
- IF EXISTS
如果不存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表不存在。
- table_name [*] | ONLY table_name | ONLY ( table_name )
table_name是需要修改的表名。
若声明了ONLY选项,则只有那个表被更改。若未声明ONLY,该表及其所有子表都将会被更改。另外,可以在表名称后面显示地增加*选项来指定包括子表,即表示所有后代表都被扫描,这是默认行为。
- constraint_name
要删除的现有约束的名字。
- index_name
索引名称。
- storage_parameter
表的存储参数的名字。
分区管理新增的两个选项:
- PERIOD(interval类型)
PERIOD的范围要求以及开启该功能的约束请参考CREATE TABLE PARTITION。
- 在建表时,如果没有设置该参数,可以通过set的方式添加该参数,并开启自动创建分区功能;如果之前已经设置该参数,则通过set的方式修改该参数。
- 用户可以通过reset该参数的方式关闭自动创建分区功能,但是在自动删除分区功能存在的情况下,不支持关闭自动创建分区功能。
- TTL(interval类型)
TTL的范围要求以及开启该功能的约束请参考CREATE TABLE PARTITION。
- 在建表时,如果没有设置该参数,可以通过set的方式添加该参数,并开启自动删除分区功能;如果之前已经设置该参数,则通过set的方式修改该参数。
- 用户可以通过reset该参数的方式关闭自动删除分区功能。
- PERIOD(interval类型)
- new_owner
表所属新的拥有者的名字。
- new_tablespace
表所属新的表空间名字。
- column_name,column_1_name, column_2_name
现存的或新字段的名称。
- data_type
新字段的类型,或者现存字段的新类型。
- compress_mode
表字段的压缩可选项,当前仅对行存表有效。该子句指定该字段优先使用的压缩算法。
- collation
字段排序规则名称。可选字段COLLATE指定了新字段的排序规则,如果省略,排序规则为新字段的默认类型。
- USING expression
USING子句声明如何从旧的字段值里计算新的字段值;如果省略,缺省从旧类型向新类型的赋值转换。如果从旧数据类型到新类型没有隐含或者赋值的转换,则必须提供一个USING子句。
ALTER TYPE的USING选项实际上可以声明涉及该行旧值的任何表达式,即它可以引用除了正在被转换的字段之外其他的字段。这样,就可以用ALTER TYPE语法做非常普遍性的转换。因为这个灵活性,USING表达式并没有作用于该字段的缺省值(如果有的话),结果可能不是缺省表达式要求的常量表达式。这就意味着如果从旧类型到新类型没有隐含或者赋值转换的话,即使存在USING子句,ALTER TYPE也可能无法把缺省值转换成新的类型。在这种情况下,应该用DROP DEFAULT先删除缺省,执行ALTER TYPE,然后使用SET DEFAULT增加一个合适的新缺省值。类似的考虑也适用于涉及该字段的索引和约束。
- NOT NULL | NULL
设置列是否允许空值。
- integer
带符号的整数常值。当使用PERCENT时表示按照表数据的百分比收集统计信息,integer的取值范围为0-100。
- attribute_option
属性选项。
- PLAIN | EXTERNAL | EXTENDED | MAIN
字段存储模式。
- PLAIN必需用于定长的数值(比如integer)并且是内联的、不压缩的。
- MAIN用于内联、可压缩的数据。
- EXTERNAL用于外部保存、不压缩的数据。使用EXTERNAL将令在text和bytea字段上的子字符串操作更快,但付出的代价是增加了存储空间。
- EXTENDED用于外部的压缩数据,EXTENDED是大多数支持非PLAIN存储的数据的缺省。
- CHECK ( expression )
每次将要插入的新行或者将要被更新的行必须使表达式结果为真才能成功,否则会抛出一个异常并且不会修改数据库。
声明为字段约束的检查约束应该只引用该字段的数值,而在表约束里出现的表达式可以引用多个字段。
目前,CHECK表达式不能包含子查询也不能引用除当前行字段之外的变量。
- DEFAULT default_expr
给字段指定缺省值。
缺省表达式的数据类型必须和字段类型匹配。
缺省表达式将被用于任何未声明该字段数值的插入操作。如果没有指定缺省值则缺省值为NULL 。
default_expr中若使用后缀操作符(如!),需使用括号括起来。
- UNIQUE [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] index_parameters
UNIQUE ( column_name [, ... ] ) [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] index_parameters
UNIQUE约束表示表里的一个或多个字段的组合必须在全表范围内唯一。
其中[ NULLS [ NOT ] DISTINCT | NULLS IGNORE ]字段用来指定Unique唯一索引中索引列NULL值的处理方式。
默认取值:该参数默认取值为空,即NULL值可重复插入。
在对插入的新数据和表中原始数据进行列的等值比较时,对于NULL值有以下三种处理方式:
- NULLS DISTINCT:NULL值互不相等,即NULL值可重复插入。
- NULLS NOT DISTINCT:NULL值相等。若索引列全为NULL,则NULL值不可重复插入;部分索引列为NULL,只有非NULL值不相等,才可成功插入数据。
- NULLS IGNORE:在等值比较时跳过NULL值。若索引列全为NULL,则NULL值可重复插入;部分索引列为NULL,只有非NULL值不相等,才可成功插入数据。
三种处理方式具体的行为如下表所示:
表1 唯一索引中索引列NULL值的处理方式 字段控制
索引列全为NULL
部分索引列为NULL
NULLS DISTINCT
可重复插入
可重复插入
NULLS NOT DISTINCT
不可重复插入
非NULL值相等,不可插入;非NULL值不相等,则插入成功
NULLS IGNORE
可重复插入
非NULL值相等,不可插入;非NULL值不相等,则插入成功
- PRIMARY KEY index_parameters
PRIMARY KEY ( column_name [, ... ] ) index_parameters
主键约束表明表中的一个或者一些字段只能包含唯一(不重复)的非NULL值。
- DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE
设置该约束是否可推迟,列存暂不支持。
- DEFERRABLE:可以推迟到事务结尾使用SET CONSTRAINTS命令检查。
- NOT DEFERRABLE:在每条命令之后马上检查。
- INITIALLY IMMEDIATE:那么每条语句之后就立即检查它。
- INITIALLY DEFERRED:只有在事务结尾才检查它。
- WITH ( {storage_parameter = value} [, ... ] )
为表或索引指定一个可选的存储参数。
- COMPRESS|NOCOMPRESS
- NOCOMPRESS:如果指定关键字NOCOMPRESS则不会修改表的现有压缩特性。
- COMPRESS:如果指定COMPRESS关键字,则对该表进行批量插入元组时触发该特性。
- new_table_name
修改后新的表名称。
- new_column_name
表中指定列修改后新的列名称。
- new_constraint_name
修改后表约束的新名称。
- new_schema
修改后新的模式名称。
- CASCADE
级联删除依赖于被依赖字段或者约束的对象(比如引用该字段的视图)。
- RESTRICT
如果字段或者约束还有任何依赖的对象,则拒绝删除该字段。这是缺省行为。
- schema_name
表所在的模式名称。
- cache_policy
表缓存策略,仅云原生3.0版本支持,具体取值参见▪cache_policy(仅云原生3.0版本支...
- GaussDB(DWS)常用SQL_常用SQL命令_SQL语法
- 数据仓库服务GaussDB(DWS)_SQL on Anywhere
- DWS安全_数据仓库服务安全_DWS数据安全管理_DWS安全保障_DWS安全策略
- 调用GaussDB(DWS) API接口_数据仓库服务调用API_如何调用API_在DWS中调用API
- GAUSS(DWS)工具_gsql工具_DataStudio工具_DSC工具
- DWS产品介绍_DWS产品优势_DWS功能_DWS使用场景_DWS是什么
- DWS资源管理_GaussDB(DWS)资源管理作用_DWS资源管控
- GaussDB主键生成_GaussDB存储过程_高斯数据库主键生成_华为云
- 数据库监控DMS_数据库智能运维_了解Auto Pilot_DMS_DWS节点监控
- GaussDB数据库SQL语法_SQL语法_CREATE_ALTER