Vertica主键奇怪的行为

时间:2015-11-24 17:03:52

标签: vertica

我在vertica 7.1.2中编写了这段简单的代码

select reenable_duplicate_key_error();
create table Person(id int PRIMARY KEY, firstname varchar(20));
insert into Person select 1, 'test1' union all select 1, 'test2' union all select 1, 'test3';

现在,如果我做了

select * from Person;

我看到了

 id | firstname
----+-----------
  1 | test1
  1 | test2
  1 | test3
(3 rows)

因此似乎没有将密钥标记为主键的效果

1 个答案:

答案 0 :(得分:2)

这是预期和记录的行为。 Vertica不会在加载时强制执行唯一性(想象一下,尝试摄取500GB并且由于PK违规而不得不回滚)。您可以在提交或升级到7.2之前使用analyze_constraints,您可以在其中启用PK的强制执行。使用密钥进行参照完整性仍然很重要。

有关在加载时强制执行唯一性的其他方法,请参阅my blog post

更新:从7.2开始,Vertica可以自动强制执行主要和唯一键约束。有关详细信息,请参阅documentation