2016-02-15 59 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是分區鍵。

相關問題