Column-constraint
为某一列的元数据添加约束。有关详细信息,请参阅约束。
语法
[ { AUTO_INCREMENT | IDENTITY } [ (args) ] ]
[ CONSTRAINT constraint‑name ] {
[ CHECK (expression) [ ENABLED | DISABLED ] ]
[ [ DEFAULT expression ] [ SET USING expression } | DEFAULT USING expression ]
[ NULL | NOT NULL ]
[ { PRIMARY KEY [ ENABLED | DISABLED ] REFERENCES table [( column )] } ]
[ UNIQUE [ ENABLED | DISABLED ] ]
}
参数
AUTO_INCREMENT | IDENTITY
- 创建一个表列,其值将由数据库自动生成和管理。不能更改或加载此列中的值。只能在一个表列上设置此约束。
AUTO_INCREMENT
和IDENTITY
是同义词。有关此约束和可选实参的详细信息,请参阅 AUTO_INCREMENT 和 IDENTITY 序列。这些选项对临时表无效。
-
CONSTRAINT constraint‑name
- 为约束分配名称,对以下约束有效:
-
PRIMARY KEY
-
REFERENCES
(外键) -
CHECK
-
UNIQUE
如果忘记为这些约束分配名称,Vertica 会分配其自己的名称。有关详细信息,请参阅对约束进行命名。
Vertica 建议对所有约束进行命名。
-
-
CHECK (expression)
- 添加检查条件 expression,该条件将返回布尔值。
DEFAULT
- 指定此列的默认值:
DEFAULT default‑expr
如果操作忽略了此列中的值,Vertica 将评估
DEFAULT
表达式并在加载操作时设置此列。有关有效表达式的详细信息,请参阅定义列值。 SET USING
- 指定通过指定的表达式设置此列中的值:
SET USING using‑expr
仅当调用了函数
REFRESH_COLUMNS
时,Vertica 才会评估SET USING
表达式并刷新列值。有关有效表达式的详细信息,请参阅定义列值。 DEFAULT USING
- 定义具有
DEFAULT
和SET USING
约束的列,为两者指定相同的表达式。DEFAULT USING
列支持的表达式与SET USING
列相同,并遵从相同的限制。 NULL | NOT NULL
- 指定列是否可以包含 null 值:
-
NULL
:允许列中出现 null 值。如果您在主键列上设置此约束,Vertica 将忽略该约束并将其设置为NOT NULL
。 -
NOT NULL
:指定列在插入和更新操作期间必须设置为一个值。如果列既没有默认值,也没有为其提供值,则INSERT
或UPDATE
将返回错误。
如果忽略此约束,则除主键列之外的所有列的默认值将为
NULL
,Vertica 始终将其设置为NOT NULL
。外部表: 如果指定
NOT NULL
且列包含 null 值,则查询可能会返回错误或产生异常行为。仅当您确定列不包含 null 值时,再为外部表列指定NOT NULL
。 -
PRIMARY KEY
- 将此列标识为表的主键。
REFERENCES
- 将此列标识为外键:
REFERENCES table [column]
其中 column 是 table 中的主键。如果省略了 column,Vertica 将引用 table 中的主键。
UNIQUE
- 要求列数据对于所有表行都是唯一的。
特权
表所有者或用户 WITH GRANT OPTION 是授予者。
-
对表的 REFERENCES 权限,可创建引用此表的外键约束
-
包含表的架构上的 USAGE 权限
强制执行约束
可以使用关键字 ENABLED
或 DISABLED
限定以下约束:
-
PRIMARY KEY
-
UNIQUE
-
CHECK
如果省略了 ENABLED
或 DISABLED
,Vertica 会通过检查相应的配置参数来确定是否自动启用约束:
-
EnableNewPrimaryKeysByDefault
-
EnableNewUniqueKeysByDefault
-
EnableNewCheckConstraintsByDefault
有关详细信息,请参阅约束强制执行。