400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
YMatrix 文档
集群部署
SQL参考
工具指南
更改一个数据类型的定义。
ALTER TYPE name action [, ... ]
ALTER TYPE name OWNER TO new_owner
ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ]
ALTER TYPE name RENAME TO new_name
ALTER TYPE name SET SCHEMA new_schema
ALTER TYPE name ADD VALUE [ IF NOT EXISTS ] new_enum_value [ { BEFORE | AFTER } existing_enum_value ]
ALTER TYPE name SET DEFAULT ENCODING ( storage_directive )
其中 action 是下列选项之一:
ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ]
DROP ATTRIBUTE [ IF EXISTS ] attribute_name [ CASCADE | RESTRICT ]
ALTER ATTRIBUTE attribute_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ CASCADE | RESTRICT ]
其中 storage_directive 是:
COMPRESSTYPE={ZLIB | ZSTD | QUICKLZ | RLE_TYPE | NONE}
COMPRESSLEVEL={0-19}
BLOCKSIZE={8192-2097152}
ALTER TYPE 更改现有类型的定义。 有几个子形式:
可以将 ADD ATTRIBUTE, DROP ATTRIBUTE 和 ALTER ATTRIBUTE 操作组合为多个更改列表,以并行应用。 例如,可以在单个命令中添加多个属性和/或更改多个属性的类型。
您可以更改名称,所有者和类型的架构。 您还可以添加或更新标量类型的存储选项。
注意:YMatrix 数据库不支持为行或复合类型添加存储选项。
您必须拥有该类型才能使用 ALTER TYPE。 要更改类型的架构,您还必须对新架构具有 CREATE 特权。 要更改所有者,您还必须是新拥有角色的直接或间接成员,并且该角色必须对类型的架构具有 CREATE 特权。 (这些限制迫使更改所有者不能执行删除和重新创建类型的任何操作。但是,超级用户可以更改任何类型的所有权。)要添加属性或更改属性类型,还必须具有 USAGE 数据类型的特权。
ALTER TYPE ... ADD VALUE (向枚举类型添加新值的形式)不能在事务块内执行。
涉及增加的枚举值的比较有时会比仅涉及枚举类型的原始成员的比较慢。 通常只有在使用 BEFORE 或 AFTER 设置新值的排序位置(而不是列表的末尾)时,才会发生这种情况。 但是,有时即使将新值添加到末尾也会发生(如果自从最初创建枚举类型以来,OID 计数器“环绕”,就会发生这种情况)。 增长速度通常很小。 但是,如果重要的话,可以通过删除并重新创建枚举类型,或者通过转储并重新加载数据库来获得最佳性能。
name
new_name
new_owner
new_schema
attribute_name
new_attribute_name
data_type
new_enum_value
existing_enum_value
storage_directive
要重命名名为 electronic_mail 的数据类型:
ALTER TYPE electronic_mail RENAME TO email;
更改用户自定义类型 email 的所有者为 joe:
ALTER TYPE email OWNER TO joe;
更改用户自定义类型 email 的模式为 customers:
ALTER TYPE email SET SCHEMA customers;
设置或更改名为 int33 的用户定义类型的压缩类型和压缩级别:
ALTER TYPE int33 SET DEFAULT ENCODING (compresstype=zlib, compresslevel=7);
要将新属性添加到类型:
ALTER TYPE compfoo ADD ATTRIBUTE f3 int;
要将新值添加到特定排序位置的枚举类型:
ALTER TYPE colors ADD VALUE 'orange' AFTER 'red';
添加和删除属性的变体是 SQL 标准的一部分。 其他变体是 YMatrix 数据库扩展。