

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

# `CREATE TABLE`
<a name="create-table-syntax-support"></a>

`CREATE TABLE` 可定義新的資料表。

```
CREATE TABLE [ IF NOT EXISTS ] table_name ( [
  { column_name data_type [ STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ] [ column_constraint [ ... ] ]
    | table_constraint
    | LIKE source_table [ like_option ... ] }
    [, ... ]
] )

where column_constraint is:

[ CONSTRAINT constraint_name ]
{ NOT NULL |
  NULL |
  CHECK ( expression )|
  DEFAULT default_expr |
  GENERATED ALWAYS AS ( generation_expr ) STORED |
  GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY ( sequence_options ) |
  UNIQUE [ NULLS [ NOT ] DISTINCT ] index_parameters |
  PRIMARY KEY index_parameters |

and table_constraint is:

[ CONSTRAINT constraint_name ]
{ CHECK ( expression ) |
  UNIQUE [ NULLS [ NOT ] DISTINCT ] ( column_name [, ... ] ) index_parameters |
  PRIMARY KEY ( column_name [, ... ] ) index_parameters |

and like_option is:

{ INCLUDING | EXCLUDING } { COMMENTS | CONSTRAINTS | DEFAULTS | GENERATED | IDENTITY | INDEXES | STATISTICS | ALL }

index_parameters in UNIQUE, and PRIMARY KEY constraints are:
[ INCLUDE ( column_name [, ... ] ) ]
```

## 身分資料欄
<a name="create-table-identity-columns"></a>

**注意**  
使用身分資料欄時，應仔細考慮快取值。如需詳細資訊，請參閱 [`CREATE SEQUENCE`](create-sequence-syntax-support.md) 頁面上的重要標註。  
如需如何根據工作負載模式以最佳方式使用身分資料欄的指引，請參閱 [使用序列和身分資料欄](sequences-identity-columns-working-with.md)。

`GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY ( {{sequence_options}} )` 子句會將資料欄建立為*身分資料欄*。它將有一個隱含序列連接到它，在新插入的資料列中，資料欄將自動具有來自指派給它的序列的值。這類資料欄隱含為 `NOT NULL`。

子句`ALWAYS`和 會`BY DEFAULT`決定在 `INSERT`和 `UPDATE`命令中明確處理使用者指定值的方式。

在 `INSERT`命令中，如果選取 `ALWAYS` ，則只有在`INSERT`陳述式指定 時，才會接受使用者指定的值`OVERRIDING SYSTEM VALUE`。如果選取 `BY DEFAULT` ，則使用者指定的值優先。

在 `UPDATE`命令中，如果選取 `ALWAYS` ，則會`DEFAULT`拒絕將資料欄更新為 以外的任何值。`BY DEFAULT` 如果選取 ，則欄可以正常更新。( `UPDATE`命令沒有 `OVERRIDING`子句。)

{{sequence\_options}} 子句可用來覆寫序列的參數。可用的選項包括針對 顯示的選項[`CREATE SEQUENCE`](create-sequence-syntax-support.md)，加上 `SEQUENCE NAME {{name}}`。如果沒有 `SEQUENCE NAME`，系統會為序列選擇未使用的名稱。

## 儲存模式
<a name="create-table-storage"></a>

選用的 `STORAGE` 子句會設定資料欄的儲存模式。使用這些選項來控制可變長度資料類型的壓縮行為，例如 `JSON`。

Amazon Aurora DSQL 會在超過特定大小時壓縮某些資料類型。若要停用此行為，請使用 `PLAIN`或 `EXTERNAL`選項。

**`PLAIN`**  
Aurora DSQL 會在不壓縮的情況下內嵌存放資料。這是固定長度資料類型的唯一選項，例如 `integer`。使用此選項可停用某些可變長度類型的壓縮。

**`MAIN` \| `EXTENDED` \| `DEFAULT`**  
`MAIN` 如果基礎資料類型支援壓縮， 和 `EXTENDED` 允許選擇性壓縮資料欄。 `DEFAULT` 會將儲存模式設定為資料欄資料類型的預設模式。

**`EXTERNAL`**  
Aurora DSQL 目前不支援 TOAST 資料表，但會`EXTERNAL`停用支援壓縮的資料類型壓縮。