alter composite primary key in cassandra CQL 3.0

aroyc picture aroyc · Mar 3, 2014 · Viewed 30.9k times · Source

I'm in a situation where I need to change the the composite primary key as follows:

Old Primary Key: (id, source, attribute_name, updated_at);

New Primary Key I want: (source, id, attribute_name, updated_at);

I issued the following (mysql like) command:

ALTER TABLE general_trend_table 
DROP PRIMARY KEY, 
ADD PRIMARY KEY(source, id, attribute_name, updated_at);

I got the following error:

Bad Request: line 1:38 no viable alternative at input 'PRIMARY'

any idea how to get around this problem? more specifically I want to know is there any way to change the primary key in cassandra?

Answer

Mikhail Stepura picture Mikhail Stepura · Mar 3, 2014

There is no way to change a primary key, as it defines how your data is physically stored.

You can create a new table with the new primary key, copy data from the old one, and then drop the old table.