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_INCREMENTIDENTITY 是同义词。有关此约束和可选实参的详细信息,请参阅 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
定义具有 DEFAULTSET USING 约束的列,为两者指定相同的表达式。 DEFAULT USING 列支持的表达式与 SET USING 列相同,并遵从相同的限制
NULL | NOT NULL
指定列是否可以包含 null 值:
  • NULL:允许列中出现 null 值。如果您在主键列上设置此约束,Vertica 将忽略该约束并将其设置为 NOT NULL

  • NOT NULL:指定列在插入和更新操作期间必须设置为一个值。如果列既没有默认值,也没有为其提供值,则 INSERTUPDATE 将返回错误。

如果忽略此约束,则除主键列之外的所有列的默认值将为 NULL,Vertica 始终将其设置为 NOT NULL

外部表: 如果指定 NOT NULL 且列包含 null 值,则查询可能会返回错误或产生异常行为。仅当您确定列不包含 null 值时,再为外部表列指定 NOT NULL

PRIMARY KEY
将此列标识为表的主键。
REFERENCES
将此列标识为外键:
REFERENCES table [column]

其中 columntable 中的主键。如果省略了 column,Vertica 将引用 table 中的主键。

UNIQUE
要求列数据对于所有表行都是唯一的。

特权

表所有者或用户 WITH GRANT OPTION 是授予者。

  • 对表的 REFERENCES 权限,可创建引用此表的外键约束

  • 包含表的架构上的 USAGE 权限

强制执行约束

可以使用关键字 ENABLEDDISABLED 限定以下约束:

  • PRIMARY KEY

  • UNIQUE

  • CHECK

如果省略了 ENABLEDDISABLED,Vertica 会通过检查相应的配置参数来确定是否自动启用约束:

  • EnableNewPrimaryKeysByDefault

  • EnableNewUniqueKeysByDefault

  • EnableNewCheckConstraintsByDefault

有关详细信息,请参阅约束强制执行