ALTER EXTERNAL TABLE
ALTER EXTERNAL TABLE¶
更改外部表的定义。
- 语法
- ``` sql
ALTER EXTERNAL TABLE name action [, … ]
action关键字为以下子句之一: ADD [COLUMN] new_column type DROP [COLUMN] column [RESTRICT|CASCADE] ALTER [COLUMN] column TYPE type OWNER TO new_owner
- 描述
-
ALTER EXTERNAL TABLE
改变了一个已存在的外部表的定义。 下面这些是ALTER EXTERNAL TABLE
支持的动作。ADD COLUMN
- 添加一个新列到外部表的定义。
DROP COLUMN
- 从一个外部表定义中删除一列。如果你删掉只读外部表的列,这只会在SeaboxMPP的表定义中修改。
CASCADE
关键字是用来当一些其他表依赖于这些列时使用,比如说一个视图依赖于这列。 ALTER COLUMN TYPE
- 改变一个表列的数据类型。
OWNER
- 将一个外部表的所有者改为指定用户。
用
ALTER TABLE
来在一个外部表中实现这些操作。-
设置(修改)表模式
-
重命名表
-
重命名表中的列
你必须是外部表的所有者才能使用
ALTER EXTERNAL TABLE
或者ALTER TABLE
。要改变一个外部表的模式,你还必须在新模式上有CREATE
的权限。要更改所有者,用户还必须是新拥有角色的直接或间接成员,该角色必须对外部表的模式具有CREATE
权限。超级用户自动拥有这些权限。用
ALTER EXTERNAL TABLE
或者ALTER TABLE
修改外部表的定义不会影响外部的数据。ALTER EXTERNAL TABLE
和ALTER TABLE
命令不会修改外部表的类型(读、写、网页),表的FORMAT
信息,或者外部数据的位置。要修改这些信息,你必须删除然后重建外部表的定义。 - 参数
-
该SQL命令参数说明见下
name
- 要修改的现有外部表定义的名称(可以是方案限定)。
column
- 现有列的名称。
new_column
- 新列的名称
type
- 新列的数据类型,或者现有列的新数据类型。
new_owner
- 外部表的新所有者角色名。
CASCADE
- 自动删除那些依赖于要删除列的对象,比如说依赖于要删除列的视图。
RESTRICT
- 拒绝删除那些有依赖对象的列,这是默认的设置。
- 示例
-
往外部表的定义中添加新列:
ALTER EXTERNAL TABLE ext_expenses ADD COLUMN manager text;
改变外部表的所有者:
ALTER EXTERNAL TABLE ext_data OWNER TO jojo;
改变外部表的数据类型:
ALTER EXTERNAL TABLE ext_leads ALTER COLUMN acct_code TYPE integer
- 兼容性说明
ALTER EXTERNAL TABLE
是SeaboxMPP数据的扩展。标准SQL语句或者PostgreSQL中没有ALTER EXTERNAL TABLE
语句。- 相关SQL命令
CREATE EXTERNAL TABLE
,DROP EXTERNAL TABLE
,ALTER TABLE