2013-08-29 11 views
8

Próbuję usunąć za pomocą dodatkowego indeksu lub klucza kolumny w tabeli. Nie chodzi mi o wydajność, bo to będzie niezwykłe zapytanie. Nie jesteś pewien, czy to możliwe? Np .:Kasowanie Usuń według wtórnego indeksu lub zezwalając na filtrowanie

CREATE TABLE user_range (
    id int, 
    name text, 
    end int, 
    start int, 
    PRIMARY KEY (id, name) 
) 

cqlsh> wybierz * z dat.user_range gdzie id = 774516966;

id  | name  | end | start 
-----------+-----------+-----+------- 
774516966 | 0 - 499 | 499 |  0 
774516966 | 500 - 999 | 999 | 500 

mogę:

cqlsh> select * from dat.user_range where name='1000 - 1999' allow filtering; 

id   | name  | end | start 
-------------+-------------+------+------- 
-285617516 | 1000 - 1999 | 1999 | 1000 
-175835205 | 1000 - 1999 | 1999 | 1000 
-1314399347 | 1000 - 1999 | 1999 | 1000 
-1618174196 | 1000 - 1999 | 1999 | 1000 
Blah blah… 

Ale nie mogę usunąć:

cqlsh> delete from dat.user_range where name='1000 - 1999' allow filtering; 
Bad Request: line 1:52 missing EOF at 'allow' 
cqlsh> delete from dat.user_range where name='1000 - 1999'; 
Bad Request: Missing mandatory PRIMARY KEY part id 

Nawet jeśli utworzyć indeks:

cqlsh> create index on dat.user_range (start); 
cqlsh> delete from dat.user_range where start=1000; 
Bad Request: Non PRIMARY KEY start found in where clause 

to możliwe, aby usunąć bez znajomości klucza głównego?

Odpowiedz

14

Nie, usuwanie za pomocą indeksu wtórnego nie jest obsługiwany: CASSANDRA-5527

7

Kiedy masz swój indeks wtórny można zaznaczyć wszystkie wiersze z tego indeksu. Kiedy masz swoje wiersze, wiesz, klucz podstawowy i można następnie usunąć wiersze.

2

Przyszedłem tutaj, szukając rozwiązania, aby usunąć wiersze z rodziny kolumn z Kasandra. Skończyło się na wykonaniu INSERT i ustawieniu TTL (time to live), aby nie musiałem się martwić o jego usunięcie.

Oddanie go może pomóc komuś.

Powiązane problemy