可以更改cassandra表中的列以使其静态吗?

时间:2016-01-22 14:08:04

标签: cassandra cql

我在cassandra数据库中有一个带有一些静态列的表,我希望为它添加另一个静态列。有没有办法改变表,以便新列是静态的?

2 个答案:

答案 0 :(得分:3)

假设您的密钥空间为key,表格架构为:

 CREATE TABLE p (   
     k text,   
     s text STATIC,   
     i int,   
     PRIMARY KEY (k, i) ); 

然后你可以执行

 ALTER TABLE p ADD f text STATIC;

答案 1 :(得分:2)

正如Will的回答所指出的,这可能取决于您使用的是哪个版本。 CQL 3.1的ALTER documentation(Cassandra 2.0和2.1)声明:

  

不允许在表格中添加这些内容:

     
      
  • 添加与现有列名称相同的列
  •   
  • 静态列
  •   

虽然显然它适用于2.1.9。

另外需要注意的是,您无法将现有列更改为静态列。

aploetz@cqlsh:stackoverflow> ALTER TABLE bills2 ALTER amount TYPE bigint static;
SyntaxException: <ErrorMessage code=2000 [Syntax error in CQL query] message="line 1:44 missing EOF at 'static' (...bills2 ALTER amount TYPE bigint [static];)">