1

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

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

然后我插入了两条记录,故意留下bnull :

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

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

SELECT ANALYZE_CONSTRAINTS('t1');    

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

4

1 回答 1

2

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

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

此外,如果我将大量的聚合作为输出,我也不用担心到处都有一些欺骗。也许这是一种糟糕的形式,但数十亿中的一些条目并不让我担心。

于 2013-05-16T13:37:18.750 回答