2016-02-15 58 views
1

在C *中创建下表时,创建后主键不同。为什么Cassandra会更改分区键?

CREATE TABLE example (
section text, 
server text, 
unique_id int, 
column1 text, 
column2 int, 
PRIMARY KEY ((section), server, unique_id) 
) WITH CLUSTERING ORDER BY (server ASC, unique_id ASC); 

当我描述了表看来好像部分不被保存为分区键:

cqlsh:测试>描述例子;

CREATE TABLE test.example (
    section text, 
    server text, 
    unique_id int, 
    column1 text, 
    column2 int, 
    PRIMARY KEY (section, server, unique_id) 
) WITH CLUSTERING ORDER BY (server ASC, unique_id ASC) 

为什么会发生这种情况?我错过了什么吗?

+0

如果您的分区密钥只包含一列,则不需要使用括号。多列初始密钥的第一列默认为分区密钥列。 C *根本不会回显不必要的括号。 – Ralf

+0

啊,我没有在文档中遇到过,或者我忘记了。谢谢:)如果您希望我接受它,请添加为答案。 – Kevin

回答

2

如果您的分区密钥只包含一列,则不需要使用括号。多列初始密钥的第一列默认为分区密钥列。 C *根本不会回显不必要的括号。

从CQL 3.1 documentation

PRIMARY KEY是:

[..]

(column_name1,column_name2,column_name3 ...)

[..]

column_name1是分区键。

相关问题