具有可空列的Vertica唯一约束

时间:2013-05-15 20:47:49

标签: vertica

我有一个具有唯一约束的表格,其中abc都可以为空:

ALTER TABLE public.t1 ADD CONSTRAINT unique_ids UNIQUE (a, b, c);

然后我插入两条记录,故意将b留空:

insert into t1 (a,c) values ('test', '12312'); 
insert into t1 (a,c) values ('test', '12312');

我希望违反了唯一约束,但显然Vertica并不这么认为,因为以下内容不会返回任何内容:

SELECT ANALYZE_CONSTRAINTS('t1');    

如何在Vertica中的多个(可为空)列中强制执行唯一约束?

1 个答案:

答案 0 :(得分:2)

我必须查阅文档以获得最终答案,但我很确定Vertica在插入过程中不会强制执行约束。它与优化有关。

如果我需要,我总是在ETL框架中强制执行唯一性。

另外,如果我作为输出做了大量的聚合,我不担心这里和那里的一些欺骗。也许这是糟糕的形式,但数十亿的一些条目并没有让我担心。