

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# ALTER TABLE ADD 和 DROP COLUMN 範例
<a name="r_ALTER_TABLE_COL_ex-add-drop"></a>

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

## 先 ADD 再 DROP 基本欄位
<a name="r_ALTER_TABLE_COL_ex-add-then-drop-a-basic-column"></a>

下列範例會將獨立的 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
----------------
NULL
NULL
NULL
NULL
NULL
```

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

```
alter table users drop column feedback_score;
```

## 捨棄具有相依物件的欄位
<a name="r_ALTER_TABLE_COL_ex-dropping-a-column-with-a-dependent-object"></a>

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

首先再次將 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;
```