我有一个具有唯一约束的表格,其中a
,b
和c
都可以为空:
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中的多个(可为空)列中强制执行唯一约束?
答案 0 :(得分:2)
我必须查阅文档以获得最终答案,但我很确定Vertica在插入过程中不会强制执行约束。它与优化有关。
如果我需要,我总是在ETL框架中强制执行唯一性。
另外,如果我作为输出做了大量的聚合,我不担心这里和那里的一些欺骗。也许这是糟糕的形式,但数十亿的一些条目并没有让我担心。