设置约束
您可以使用
CREATE TABLE 和
分别对新表和现有表设置约束ALTER TABLE...ADD CONSTRAINT。
对新表设置约束
CREATE TABLE 可以通过两种方式指定约束:作为列定义的一部分,或遵循所有列定义。
例如,以下 CREATE TABLE 语句对 sku_number、NOT NULL 和 UNIQUE 列设置两个约束。在定义了所有列之后,该语句还设置一个由以下两列组成的主键:product_key 和 product_version:
=> CREATE TABLE public.prod_dimension(
product_key int,
product_version int,
product_description varchar(128),
sku_number char(32) NOT NULL UNIQUE,
category_description char(32),
CONSTRAINT pk PRIMARY KEY (product_key, product_version) ENABLED
);
CREATE TABLE
对现有表设置约束
ALTER TABLE...ADD CONSTRAINT 向现有表添加约束。例如,以下语句为 product_version 列指定唯一值:
=> ALTER TABLE prod_dimension ADD CONSTRAINT u_product_versions UNIQUE (product_version) ENABLED;
ALTER TABLE
验证现有数据
在已包含数据的列上添加约束时,如果以下条件都成立,Vertica 会立即验证列值:
如果其中任何一个条件不成立,Vertica 不会验证列值。在这种情况下,您必须调用
ANALYZE_CONSTRAINTS 来查找约束违规。否则,查询可能会返回意外结果。有关详细信息,请参阅检测约束违规。
导出表约束
无论您是在列定义中还是在表中指定约束,Vertica 都会将表 DDL 存储为 CREATE 语句的一部分,并将约束导出。有一个例外:外键作为 ALTER TABLE 语句存储和导出。
例如:
=> SELECT EXPORT_TABLES('','prod_dimension');
...
CREATE TABLE public.prod_dimension
(
product_key int NOT NULL,
product_version int NOT NULL,
product_description varchar(128),
sku_number char(32) NOT NULL,
category_description char(32),
CONSTRAINT C_UNIQUE UNIQUE (sku_number) DISABLED,
CONSTRAINT pk PRIMARY KEY (product_key, product_version) ENABLED,
CONSTRAINT u_product_versions UNIQUE (product_version) ENABLED
);
(1 row)