Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

ALTER TABLE ADD 和 DROP COLUMN 示例

以下示例演示如何使用 ALTER TABLE 添加基本表列,然后删除该列;另外还演示如何删除具有从属对象的列。

对基本列先执行 ADD,然后执行 DROP

以下示例将独立 FEEDBACK_SCORE 列添加到 USERS 表。该列只包含一个整数,并且该列的默认值为 NULL(无反馈分数)。

首先,查询 PG_TABLE_DEF 目录表以查看 USERS 表:

Copy
column | type | encoding | distkey | sortkey --------------+------------------------+----------+---------+-------- userid | integer | delta | true | 1 username | character(8) | lzo | false | 0 firstname | character varying(30) | text32k | false | 0 lastname | character varying(30) | text32k | false | 0 city | character varying(30) | text32k | false | 0 state | character(2) | bytedict | false | 0 email | character varying(100) | lzo | false | 0 phone | character(14) | lzo | false | 0 likesports | boolean | none | false | 0 liketheatre | boolean | none | false | 0 likeconcerts | boolean | none | false | 0 likejazz | boolean | none | false | 0 likeclassical | boolean | none | false | 0 likeopera | boolean | none | false | 0 likerock | boolean | none | false | 0 likevegas | boolean | none | false | 0 likebroadway | boolean | none | false | 0 likemusicals | boolean | none | false | 0

现在添加 feedback_score 列:

Copy
alter table users add column feedback_score int default NULL;

从 USERS 中选择 FEEDBACK_SCORE 列以验证该列已添加:

Copy
select feedback_score from users limit 5; feedback_score ---------------- (5 rows)

删除该列以恢复原始 DDL:

Copy
alter table users drop column feedback_score;

对具有从属对象的列执行 DROP

本示例删除具有从属对象的列。结果是,同时删除从属对象。

开始时,将 FEEDBACK_SCORE 列重新添加到 USERS 表:

Copy
alter table users add column feedback_score int default NULL;

接下来,从名为 USERS_VIEW 的 USERS 表创建一个视图:

Copy
create view users_view as select * from users;

现在,尝试从 USERS 表中删除 FEEDBACK_SCORE 列。此 DROP 语句使用默认行为 (RESTRICT):

Copy
alter table users drop column feedback_score;

Amazon Redshift 显示一条错误消息,说明由于另一个对象依赖该列而无法删除该列。

重新尝试删除 FEEDBACK_SCORE 列,这次指定 CASCADE 以删除所有从属对象:

Copy
alter table users drop column feedback_score cascade;