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

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

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

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

Я выполнил следующую (как MySQL) команду:

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

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

Неверный запрос: в строке 1:38 нет подходящей альтернативы на входе "ПЕРВИЧНЫЙ"

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

2 ответа

Решение

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

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

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

Другие вопросы по тегам