2014-12-04 111 views
9

我的表看起來像這樣
如何使用僅分區鍵更新cassandra中的行?

create table Notes(
    user_id varchar, 
    real_time timestamp, 
    insertion_time timeuuid, 
    read boolean PRIMARY KEY (user_id,real_time,insertion_time) 
); 

create index read_index on Notes (read); 

我想更新所有USER_ID = 'XXX' ,而無需指定所有羣集索引

UPDATE Notes SET read = true where user_id = 'xxx'; // Says Error 

錯誤:?消息=「缺少強制PRIMARY KEY部分REAL_TIME

我試圖創建一個輔助指標,但它不允許在主鍵

我怎樣才能解決這個

我選擇user_id說明是在主鍵,因爲我希望能夠做select * from Notes where user_id = 'xxx'應該是可能的。

回答

8

雖然這可能使用RDBMS和SQL是可能的,但在Cassandra中不可能使用cql。從上UPDATE命令DataStax文檔:

Each update statement requires a precise set of primary keys to be specified using a WHERE clause. You need to specify all keys in a table having compound and clustering columns.

你可能需要用Python語言編寫的東西快(或其他車手之一)來執行此類型的更新。

+2

雖然上面的答案是正確的,但我認爲值得一提的是,您可以在主鍵的最後一列使用'IN'子句(即來自作者問題的'insertion_time')。根據您的使用情況,這對於減少所需的CQL語句量非常有用。 – user909481 2017-02-15 09:43:46

相關問題