我正在使用3.0.9
运行Cassandra版本这是我的表结构
CREATE TABLE emp (
datetime bigint,
mobile bigint,
protocol varchar,
bytes bigint,
PRIMARY KEY (mobile, protocol, datetime)
);
日期时间,移动和协议是主要键,因此我将所有3个作为主键创建(我想使用协议使用DateTime更新特定移动设备的字节),但我也只想使用DateTime删除记录所有记录都小于特定日期
t尝试这样的
delete from emp where datetime > 1000;
但这不起作用
任何人请帮助我
像查询一样,您需要为卡桑德拉(Cassandra)删除的主要键组件完全指定。只要您以正确的顺序指定它们,就可以按部分主键组件删除。但是您不能仅指定(如示例中)最后一个聚类键。
示例:
aploetz@cqlsh:stackoverflow> SELECT * FROM emp;
mobile | protocol | datetime | bytes
--------+----------+----------+-------
1 | native | 400 | 4
1 | native | 600 | 3
1 | native | 1500 | 1
1 | native | 1600 | 2
(4 rows)
aploetz@cqlsh:stackoverflow> delete from emp where datetime > 1000;
InvalidRequest: Error from server: code=2200 [Invalid query] message="Some
partition key parts are missing: mobile"
aploetz@cqlsh:stackoverflow> delete from emp
where mobile=1 AND protocol='native' AND datetime > 1000;
aploetz@cqlsh:stackoverflow> SELECT * FROM emp;
mobile | protocol | datetime | bytes
--------+----------+----------+-------
1 | native | 400 | 4
1 | native | 600 | 3
(2 rows)