Могу ли я использовать поле типа счетчика в качестве первичного ключа моей таблицы C *? - PullRequest
0 голосов
/ 21 октября 2019

Когда я пытаюсь создать таблицу, как показано ниже

 create table if not exists counter_temp(id counter PRIMARY KEY , comment text);

Выдает ошибку, как показано ниже

Несколько маркеров в этой строке

  • Для таблицы со столбцами счетчиков все столбцы, кроме первичного ключа, должны иметь тип counter

  • Тип счетчика не поддерживается для части PRIMARY KEY

Вопрос 1:

В чем причина, столбец счетчика не разрешен как часть первичного ключа?

Вопрос 2: Пока я пытаюсь создать, как показано ниже

создать таблицу, если она не существует counter_temp (id uuid PRIMARY KEY, counter_t counter, текст комментария)

Ошибка: Cant mix counter и non-Счетчик столбцов в одной таблице

Что здесь не так? как правильно обращаться с этим?

Вопрос 3:

У меня есть таблица emp (счетчик emp_id, текст emp_name) в Dev env, где есть данные,теперь мне нужно скопировать эти данные в другую таблицу SIT env emp (счетчик emp_id, текст emp_name)?

Можно ли это сделать, правильно ли будет копировать поля счетчика?

1 Ответ

2 голосов
/ 27 октября 2019

Краткий ответ на вопрос 1: Нет , как указано в сообщении об ошибке. Но даже если это было разрешено, тогда это не имело никакого смысла - когда вы изменяете значение первичного ключа, вы в основном создаете новую строку с другим первичным ключом.

для Q2 - если естьхотя бы один столбец counter в таблице, тогда все остальные обычные столбцы должны иметь тип counter. Если вам нужно добавить поле комментария, просто создайте 2-ю таблицу с UUID первичным ключом и вставьте или прочитайте данные в / из 2 таблиц одновременно.

для Q3 - команда COPY cqlshподдерживает таблицы со счетчиками для более новых версий Cassandra (где реализовано исправление для CASSANDRA-9043 ). Кроме того, Spark Cassandra Connector может читать таблицы со счетчиками и записывать их. Но в обоих случаях убедитесь, что таблица назначения пуста, иначе новые значения будут добавлены к существующим.

...