0
我目前在卡桑德拉稱爲macrecord表看起來是這樣的:卡桑德拉:數據建模
macadd | position | record | timestamp
-------------------+----------+--------+---------------------
23:FD:52:34:DS:32 | 1 | 1 | 2015-09-28 15:28:59
但是我現在需要做將使用時間戳列來查詢了一系列的問題。如果沒有時間戳作爲主鍵(在這種情況下爲macadd)i-e,而沒有它作爲集羣鍵,我認爲這是不可能的。
如果我做時間戳作爲主鍵的一部分的表看起來象下面這樣:
macadd | timestamp | position | record
-------------------+---------------------+----------+--------
23:FD:52:34:DS:32 | 2015-09-28 15:33:26 | 1 | 1
但是現在每當我得到一個重複的macadd我不能更新timestamp列。
update macrecord set timestamp = dateof(now()) where macadd = '23:FD:52:34:DS:32';
給出了一個錯誤:
message="PRIMARY KEY part timestamp found in SET part"
我不認爲在這種情況下,除了刪除整排的其他解決方案,如果有macadd的一個重複的值,然後插入新行帶有更新的時間戳。
是否有更好的解決方案來更新時間戳,每當有一個重複的值的macadd或另一種方式來查詢我的原始表中只有macadd是主鍵的範圍內的時間戳值。
可能重複[Cassandra UPDATE主鍵值](http://stackoverflow.com/questions/27022325/cassandra-update-primary-key-value) – Aaron
雖然你還沒有發佈你的表定義,我可以告訴你所做的並不像在關係世界那樣直截了當。如果你需要'更新'你的時間戳,那麼它不能成爲你的主鍵的一部分。 – Aaron
@Aaron:如果我不將時間戳添加到主鍵,那麼我無法使用時間戳執行範圍查詢。這是我有兩個相反的限制。我正在創建一個表,如下所示:CREATE TABLE IF NOT EXISTS HAS.MACRecord(MACAdd VARCHAR PRIMARY KEY,Timestamp timestamp,Record int,position int);是否可以在時間戳上執行範圍查詢而不將其作爲主鍵的一部分? – srai