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 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
系统配置参数
SQL 参考
常见问题(FAQ)
新架构 FAQ
集群部署 FAQ
SQL 查询 FAQ
MatrixGate FAQ
运维 FAQ
监控告警 FAQ
PXF FAQ
PLPython FAQ
性能 FAQ
修改外表的定义。
ALTER FOREIGN TABLE [ IF EXISTS ] name
action [, ... ]
ALTER FOREIGN TABLE [ IF EXISTS ] name
RENAME [ COLUMN ] column_name TO new_column_name
ALTER FOREIGN TABLE [ IF EXISTS ] name
RENAME TO new_name
ALTER FOREIGN TABLE [ IF EXISTS ] name
SET SCHEMA new_schema
其中 action 如下:
ADD [ COLUMN ] column_name column_type [ COLLATE collation ] [ column_constraint [ ... ] ]
DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type
ALTER [ COLUMN ] column_name SET DEFAULT expression
ALTER [ COLUMN ] column_name DROP DEFAULT
ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
ALTER [ COLUMN ] column_name SET STATISTICS integer
ALTER [ COLUMN ] column_name SET ( attribute_option = value [, ... ] )
ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )
ALTER [ COLUMN ] column_name OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ])
DISABLE TRIGGER [ trigger_name | ALL | USER ]
ENABLE TRIGGER [ trigger_name | ALL | USER ]
ENABLE REPLICA TRIGGER trigger_name
ENABLE ALWAYS TRIGGER trigger_name
OWNER TO new_owner
OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )
ALTER FOREIGN TABLE 修改一个已存在的外表的定义,命令有以下的几种形式:
ADD COLUMN
DROP COLUMN [ IF EXISTS ]
IF EXISTS
SET DATA TYPE
SET/DROP DEFAULT
SET/DROP NOT NULL
SET STATISTICS
SET ( attribute_option = value [, ...] ] )
RESET ( attribute_option [, ... ] )
DISABLE/ENABLE [ REPLICA | ALWAYS ] TRIGGER
OWNER
RENAME
SET SCHEMA
OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )
你可以将除 RENAME 和 SET SCHEMA 之外的所有操作写在一个列表里让 YMatrix 数据库来并行的应用这些修改。 比如,可以在一个命令中增加多列或者修改多列的属性。
你必须是拥有这个表才能使用 ALTER FOREIGN TABLE 操作。为了修改外表的模式,你还必须在新的模式下拥有 CREATE 的权限。为了修改所有者,你必须是新的角色的直接或者间接成员,而且那个角色必须在表的模式下拥有 CREATE 权限。这些限制强制要求通过删除和重新创建表来更改所有者不会执行任何操作。 但是,超级用户无论如何都可以更改任何表的所有权。为了新增或者修改一个列的类型,你必须在数据类型上拥有 USAGE 权限。
name
column_name
new_column_name
new_name
data_type
CASCADE
RESTRICT
trigger_name
ALL
USER
new_owner
new_schema
标志一个列为 NOT NULL:
ALTER FOREIGN TABLE distributors ALTER COLUMN street SET NOT NULL;
修改一个外表的选项:
ALTER FOREIGN TABLE myschema.distributors
OPTIONS (ADD opt1 'value', SET opt2 'value2', DROP opt3 'value3');
这些 ADD,DROP 和 SET DATA TYPE 的形式于 SQL 标准相符。其他形式为 YMatrix 数据库在 SQL 标准的扩展。在单个 ALTER FOREIGN TABLE 命令中指定多个操作的功能也是 YMatrix 数据库的扩展。
你可以使用 ALTER FOREIGN TABLE ... DROP COLUMN 来删除外表中唯一的列,留下一个零列的表。这也是 SQL 的扩展,允许存在零列的外表。