本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CREATE TABLE
CREATE TABLE 可定義新的資料表。
CREATE TABLE [ IF NOT EXISTS ] table_name ( [ { column_name data_type [ 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 [, ... ] ) ]
身分資料欄
注意
使用身分資料欄時,應仔細考慮快取值。如需詳細資訊,請參閱 CREATE SEQUENCE 頁面上的重要標註。
如需如何根據工作負載模式最佳使用身分資料欄的指引,請參閱 使用序列和身分資料欄。
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和 顯示的選項SEQUENCE NAME 。如果沒有 nameSEQUENCE NAME,系統會為序列選擇未使用的名稱。