本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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;
從 選取 FEEDBACK_SCORE 欄USERS,以確認已新增:
select feedback_score from users limit 5;
feedback_score ---------------- NULL NULL NULL NULL NULL
捨棄資料欄以恢復原始 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;