问题
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?
回答1:
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.
回答2:
If there is a possibility to use the old primary key, you could create a materialzied view: http://docs.datastax.com/en/cql/3.3/cql/cql_using/useCreateMV.html But it is only recommendable, if you would need the old key.
来源:https://stackoverflow.com/questions/22139747/alter-composite-primary-key-in-cassandra-cql-3-0