Skip to main content

Vertica Primary Key Strange behavior

  • November 24, 2015
  • 1 reply
  • 7 views

knows_not_much
Forum|alt.badge.img+1

I wrote this simple piece of code

 

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';

 

 

Now if I do a 

 

select * from Person;

 

i see 


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

 

 

so it seems there is no effect of marking a key as primary key

1 reply

NorbertK
Forum|alt.badge.img
  • Participating Frequently
  • November 29, 2015

This question was posed on StackOverflow. My answer from the question:

 

This is expected and documented behavior. Vertica does not enforce uniqueness on load (imagine trying to ingest 500GB and having to rollback due to a PK violation). You can use analyze_constraints before committing or upgrade to 7.2 where you can enable enforcement of PK. It is still important to use keys for referential integrity.

 

See my blog post on other ways to enforce uniqueness on load.