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 [, ... ] ) ]
アイデンティティ列
注記
ID 列を使用する場合は、キャッシュ値を慎重に検討する必要があります。詳細については、「CREATE SEQUENCE」ページの重要なコールアウトを参照してください。
ワークロードパターンに基づいて ID 列を使用する最適な方法のガイダンスについては、「シーケンスと ID 列の使用」を参照してください。
GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY ( 句は、列を ID 列として作成します。暗黙的なシーケンスがアタッチされ、新しく挿入された行の列には、割り当てられたシーケンスの値が自動的に設定されます。このような列は暗黙的に 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 がない場合、システムはシーケンスに未使用の名前を選択します。