изменить составной первичный ключ в cassandra CQL 3.0

Я нахожусь в ситуации, когда мне нужно изменить составной первичный ключ следующим образом:

старый первичный ключ: (id, source, attribute_name, updated_at);

новый первичный ключ я хочу: (источник, id, attribute_name, updated_at);

Я выдал следующую (mysql like) команду:

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

Я получил следующую ошибку:

неправильный запрос: строка 1:38 нет жизнеспособной альтернативы на входе 'PRIMARY'

любые идеи, как обойти эту проблему? более конкретно, я хочу знать, есть ли способ изменить первичный ключ в cassandra?

2 ответов


нет способа изменить первичный ключ, поскольку он определяет, как ваши данные физически хранятся.

вы можете создать новую таблицу с новым первичным ключом, скопировать данные из старого, а затем удалить старую таблицу.


Если есть возможность использовать старый первичный ключ, вы можете создать materialzied view:http://docs.datastax.com/en/cql/3.3/cql/cql_using/useCreateMV.html Но это только рекомендуется, если вам понадобится старый ключ.