View a markdown version of this page

CREATE TABLE - Amazon Aurora DSQL

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

子句 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,则系统会为序列选择一个未使用的名称。

存储模式

可选的 STORAGE 子句可设置列的存储模式。使用这些选项可控制可变长度数据类型(例如 JSONJSONB)的压缩行为。

当某些数据类型超过特定大小时,Amazon Aurora DSQL 会对其进行压缩。要禁用此行为,请使用 PLAINEXTERNAL 选项。

PLAIN

Aurora DSQL 以内联方式存储数据,且不进行压缩。这是适用于固定长度数据类型(例如 integer)的唯一选项。使用此选项可禁止对某些可变长度类型进行压缩。

MAIN | EXTENDED | DEFAULT

如果基础数据类型支持压缩,则 MAINEXTENDED 允许对列进行可选压缩。DEFAULT 可将存储模式设置为列数据类型的默认模式。

EXTERNAL

Aurora DSQL 目前不支持 TOAST 表,但 EXTERNAL 将禁止对支持压缩的数据类型进行压缩。