

 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/)。

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

# INSERT 範例
<a name="c_Examples_of_INSERT_30"></a>

TICKIT 資料庫中的 CATEGORY 資料表包含以下資料列：

```
 catid | catgroup |  catname  |                  catdesc
-------+----------+-----------+--------------------------------------------
     1 | Sports   | MLB       | Major League Baseball
     2 | Sports   | NHL       | National Hockey League
     3 | Sports   | NFL       | National Football League
     4 | Sports   | NBA       | National Basketball Association
     5 | Sports   | MLS       | Major League Soccer
     6 | Shows    | Musicals  | Musical theatre
     7 | Shows    | Plays     | All non-musical theatre
     8 | Shows    | Opera     | All opera and light opera
     9 | Concerts | Pop       | All rock and pop music concerts
    10 | Concerts | Jazz      | All jazz singers and bands
    11 | Concerts | Classical | All symphony, concerto, and choir concerts
(11 rows)
```

 以類似 CATEGORY 資料表的結構描述建立 CATEGORY\$1STAGE 資料表，但定義資料欄的預設值：

```
create table category_stage
(catid smallint default 0,
catgroup varchar(10) default 'General',
catname varchar(10) default 'General',
catdesc varchar(50) default 'General');
```

以下 INSERT 陳述式會選取 CATEGORY 資料表中的所有資料列，然後將它們插入 CATEGORY\$1STAGE 資料表。

```
insert into category_stage
(select * from category);
```

查詢前後的括號是選用的。

此命令會將新資料列插入 CATEGORY\$1STAGE 資料表，並且依序為每個資料欄指定值：

```
insert into category_stage values
(12, 'Concerts', 'Comedy', 'All stand-up comedy performances');
```

您也可以插入結合特定值與預設值的新資料列：

```
insert into category_stage values
(13, 'Concerts', 'Other', default);
```

執行以下查詢來傳回插入的資料列：

```
select * from category_stage
where catid in(12,13) order by 1;

 catid | catgroup | catname |             catdesc
-------+----------+---------+----------------------------------
    12 | Concerts | Comedy  | All stand-up comedy performances
    13 | Concerts | Other   | General
(2 rows)
```

以下範例說明一些多資料列 INSERT VALUES 陳述式。第一個範例會在兩個資料列中插入特定 CATID 值，並且在兩個資料列的其他資料欄中插入預設值。

```
insert into category_stage values
(14, default, default, default),
(15, default, default, default);

select * from category_stage where catid in(14,15) order by 1;
 catid | catgroup | catname | catdesc
-------+----------+---------+---------
    14 | General  | General | General
    15 | General  | General | General
(2 rows)
```

下一個範例會插入包含不同的特定與預設值組合的三個資料列：

```
insert into category_stage values
(default, default, default, default),
(20, default, 'Country', default),
(21, 'Concerts', 'Rock', default);

select * from category_stage where catid in(0,20,21) order by 1;
 catid | catgroup | catname | catdesc
-------+----------+---------+---------
     0 | General  | General | General
    20 | General  | Country | General
    21 | Concerts | Rock    | General
(3 rows)
```

此範例中第一組 VALUES 產生的結果，與針對單一資料列 INSERT 陳述式指定 DEFAULT VALUES 的結果相同。

以下範例說明資料表有 IDENTITY 資料欄時的 INSERT 行為。首先，建立新的 CATEGORY 資料表版本，然後從 CATEGORY 將資料列插入其中：

```
create table category_ident
(catid int identity not null,
catgroup varchar(10) default 'General',
catname varchar(10) default 'General',
catdesc varchar(50) default 'General');


insert into category_ident(catgroup,catname,catdesc)
select catgroup,catname,catdesc from category;
```

請注意，您無法將特定整數值插入 CATID IDENTITY 資料欄。IDENTITY 資料欄的值會自動產生。

以下範例將示範，多資料列 INSERT VALUES 陳述式中無法使用子查詢做為表達式：

```
insert into category(catid) values
((select max(catid)+1 from category)),
((select max(catid)+2 from category));

ERROR: can't use subqueries in multi-row VALUES
```

下列範例會示範使用 `WITH SELECT` 子句將資料從 `venue` 資料表填入暫存資料表中的插入操作。如需 `venue` 資料表的相關資訊，請參閱 [範本資料庫](c_sampledb.md)。

首先，建立暫存資料表 `#venuetemp`。

```
CREATE TABLE #venuetemp AS SELECT * FROM venue;
```

列出 `#venuetemp` 資料表中的資料列。

```
SELECT * FROM #venuetemp ORDER BY venueid;
         
venueid | venuename                | venuecity  | venuestate| venueseats
--------+--------------------------+------------+-----------+------------
1        Toyota Park                Bridgeview   IL          0	
2        Columbus Crew Stadium      Columbus     OH          0	
3        RFK Stadium                Washington   DC          0	
4        CommunityAmerica Ballpark  Kansas City  KS          0	
5        Gillette Stadium           Foxborough   MA          68756	
...
```

使用 `WITH SELECT` 子句在 `#venuetemp` 資料表中插入 10 個重複的資料列。

```
INSERT INTO #venuetemp (WITH venuecopy AS (SELECT * FROM venue) SELECT * FROM venuecopy ORDER BY 1 LIMIT 10);
```

列出 `#venuetemp` 資料表中的資料列。

```
SELECT * FROM #venuetemp ORDER BY venueid;
         
venueid | venuename                | venuecity  | venuestate| venueseats
--------+--------------------------+------------+-----------+------------
1        Toyota Park                Bridgeview   IL          0	
1        Toyota Park                Bridgeview   IL          0	
2        Columbus Crew Stadium      Columbus     OH          0	
2        Columbus Crew Stadium      Columbus     OH          0	
3        RFK Stadium                Washington   DC          0
3        RFK Stadium                Washington   DC          0	
4        CommunityAmerica Ballpark  Kansas City  KS          0	
4        CommunityAmerica Ballpark  Kansas City  KS          0	
5        Gillette Stadium           Foxborough   MA          68756
5        Gillette Stadium           Foxborough   MA          68756
...
```