CREATE TABLE
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 [, ... ] ) ]
标识列
注意
使用标识列时,应谨慎考虑缓存值。有关更多信息,请参阅 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,则系统会为序列选择一个未使用的名称。
存储模式
可选的 STORAGE 子句可设置列的存储模式。使用这些选项可控制可变长度数据类型(例如 JSON 和 JSONB)的压缩行为。
当某些数据类型超过特定大小时,Amazon Aurora DSQL 会对其进行压缩。要禁用此行为,请使用 PLAIN 或 EXTERNAL 选项。
PLAIN-
Aurora DSQL 以内联方式存储数据,且不进行压缩。这是适用于固定长度数据类型(例如
integer)的唯一选项。使用此选项可禁止对某些可变长度类型进行压缩。 MAIN|EXTENDED|DEFAULT-
如果基础数据类型支持压缩,则
MAIN和EXTENDED允许对列进行可选压缩。DEFAULT可将存储模式设置为列数据类型的默认模式。 EXTERNAL-
Aurora DSQL 目前不支持 TOAST 表,但
EXTERNAL将禁止对支持压缩的数据类型进行压缩。