我在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)
因此似乎没有将密钥标记为主键的效果
答案 0 :(得分:2)
这是预期和记录的行为。 Vertica不会在加载时强制执行唯一性(想象一下,尝试摄取500GB并且由于PK违规而不得不回滚)。您可以在提交或升级到7.2之前使用analyze_constraints,您可以在其中启用PK的强制执行。使用密钥进行参照完整性仍然很重要。
有关在加载时强制执行唯一性的其他方法,请参阅my blog post。
更新:从7.2开始,Vertica可以自动强制执行主要和唯一键约束。有关详细信息,请参阅documentation。