[当我尝试创建如下表时
create table if not exists counter_temp(id counter PRIMARY KEY , comment text);
出现如下错误
此行上的多个标记
对于带有计数器列的表,除主键之外的所有列都必须是计数器类型
[PRIMARY KEY部分不支持计数器类型
问题1:
是什么原因,不允许将计数器列作为主键的一部分?
问题2:当我尝试如下创建时
如果不存在则创建表counter_temp(id uuid PRIMARY KEY,counter_t counter,注释文本)
错误:同一表中无法混合使用计数器和非计数器列
这里怎么了?如何正确处理?
问题3:
我在开发环境中有一个表emp(emp_id计数器,emp_name文本)那里有数据,现在我需要将该数据复制到另一个SIT env emp(emp_id计数器,emp_name文本)表?
是否可以正确复制计数器字段?
问题1的简短答案是否,因为它在错误消息中已传达。但是,即使允许它,也没有任何意义-更改主键的值时,基本上是在创建一个具有不同主键的新行。
对于Q2-如果表中至少有一个counter
列,则所有其他常规列的类型应为counter
。如果需要添加注释字段,只需使用UUID
主键创建第二个表,并同时向2个表中插入数据或从中读取数据。
对于Q3-cqlsh的COPY
命令支持带有计数器的表,用于较新的Cassandra版本(已实现CASSANDRA-9043的修复)。另外,Spark Cassandra Connector可以从带有计数器的表中读取并写入表中。但是在两种情况下,请确保目标表为空,否则新值将附加到现有值之后。