唯一约束
您可以在列上指定唯一约束,以便该列中的每个值在所有其他值之间都是唯一的。您可以在创建表时定义唯一约束,也可以使用
ALTER TABLE
向现有表添加唯一约束。您不能对具有集合类型的列使用唯一性约束。
例如,下面的 ALTER TABLE
语句将 product_dimensions
表中的 sku_number
列定义为唯一列:
=> ALTER TABLE public.product_dimension ADD UNIQUE(sku_number);
WARNING 4887: Table product_dimension has data. Queries using this table may give wrong results
if the data does not satisfy this constraint
HINT: Use analyze_constraints() to check constraint violation on data
强制执行唯一约束
您可以使用配置参数 EnableNewUniqueKeysByDefault
全局强制执行唯一约束。还可以通过使用关键字 ENABLED
限定唯一约束来对特定表强制执行唯一约束。在这两种情况下,Vertica 都会在将值加载到唯一列中时检查值,并在有任何约束违规时返回错误。或者,可以在更新表内容后使用
ANALYZE_CONSTRAINTS
验证唯一约束。有关详细信息,请参阅约束强制执行。
例如,前面的示例不在 sku_number
列中强制执行唯一约束。以下语句启用此约束:
=> ALTER TABLE public.product_dimension ALTER CONSTRAINT C_UNIQUE ENABLED;
ALTER TABLE
多列唯一约束
您可以定义由多个列组成的唯一约束。下面的 CREATE TABLE
语句指定每行中 c1 和 c2 列的组合值在所有其他行中必须唯一:
CREATE TABLE dim1 (c1 INTEGER,
c2 INTEGER,
c3 INTEGER,
UNIQUE (c1, c2) ENABLED
);