我可以将用户计数器类型字段用作C *表的主键吗?

问题描述 投票:-1回答:1

[当我尝试创建如下表时

 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文本)表?

是否可以正确复制计数器字段?

cassandra datastax cassandra-3.0
1个回答
0
投票

问题1的简短答案是,因为它在错误消息中已传达。但是,即使允许它,也没有任何意义-更改主键的值时,基本上是在创建一个具有不同主键的新行。

对于Q2-如果表中至少有一个counter列,则所有其他常规列的类型应为counter。如果需要添加注释字段,只需使用UUID主键创建第二个表,并同时向2个表中插入数据或从中读取数据。

对于Q3-cqlsh的COPY命令支持带有计数器的表,用于较新的Cassandra版本(已实现CASSANDRA-9043的修复)。另外,Spark Cassandra Connector可以从带有计数器的表中读取并写入表中。但是在两种情况下,请确保目标表为空,否则新值将附加到现有值之后。

© www.soinside.com 2019 - 2024. All rights reserved.