CREATE TABLE - Amazon Aurora DSQL

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

子句 ALWAYSBY DEFAULT 决定了在 INSERTUPDATE 命令中如何显式处理用户指定的值。

INSERT 命令中,如果选择了 ALWAYS,则只有在 INSERT 语句指定 OVERRIDING SYSTEM VALUE 时才接受用户指定的值。如果选择了 BY DEFAULT,则优先使用用户指定的值。

UPDATE 命令中,如果选择 ALWAYS,则将列更新为除 DEFAULT 以外的任何值都将遭到拒绝。如果选择 BY DEFAULT,则可以正常更新该列。(UPDATE 命令没有 OVERRIDING 子句。)

sequence_options 子句可用于覆盖序列的参数。可用的选项包括为 CREATE SEQUENCE 显示的选项,另加 SEQUENCE NAME name。如果没有 SEQUENCE NAME,则系统会为序列选择一个未使用的名称。