2015-11-24 72 views
-1

我寫了這一段簡單的代碼在Vertica的7.1.2Vertica的主鍵奇怪的行爲

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) 

所以似乎沒有將鑰匙標記爲主鑰匙的效果

回答

2

這是預期和記錄的行爲。 Vertica不會在加載時實施唯一性(想象嘗試攝取500GB並由於PK違規而必須回滾)。您可以在提交或升級到7.2之前使用analyze_constraints,您可以在其中啓用PK的強制實施。使用密鑰進行參照完整性仍然很重要。

請參閱my blog post以其他方式強制加載唯一性。

更新:從7.2開始,Vertica可以自動實施主鍵和唯一鍵約束。有關更多信息,請參閱documentation