ALTER TABLE ADD 和 DROP COLUMN 範例 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

ALTER TABLE ADD 和 DROP COLUMN 範例

以下範例示範如何使用 ALTER TABLE 先新增再刪除基本資料表資料欄,以及如何刪除具有相依物件的資料欄。

先 ADD 再 DROP 基本欄位

下列範例會將獨立的 FEEDBACK_SCORE 資料欄新增至 USERS 資料表。此資料欄僅包含整數,且此資料欄的預設值為 NULL (無意見回饋分數)。

首先,查詢 PG_TABLE_DEF 目錄資料表以檢視 USERS 資料表:

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 資料欄:

alter table users add column feedback_score int default NULL;

從 USERS 選取 FEEDBACK_SCORE 資料欄,確認其已新增:

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

刪除資料欄以恢復原始 DDL:

alter table users drop column feedback_score;

刪除具有相依物件的欄位

下列範例會刪除具有相依物件的資料欄。結果會將相依物件一併刪除。

首先再次將 FEEDBACK_SCORE 資料欄新增至 USERS 資料表:

alter table users add column feedback_score int default NULL;

接著從 USERS 資料表建立名為 USERS_VIEW 的檢視:

create view users_view as select * from users;

現在嘗試從 USERS 資料表刪除 FEEDBACK_SCORE 資料欄。此 DROP 陳述式會使用預設行為 (RESTRICT):

alter table users drop column feedback_score;

Amazon Redshift 會顯示錯誤訊息,指出無法刪除資料欄,因為有其他物件與其相依。

再次嘗試刪除 FEEDBACK_SCORE 資料欄,這次指定 CASCADE 以刪除所有相依物件:

alter table users drop column feedback_score cascade;