使用IN运算符的“聚类”列中的Cassandra更新和删除 [英] Cassandra Update and Delete in Clustering column Using IN operator

查看:78
本文介绍了使用IN运算符的“聚类”列中的Cassandra更新和删除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的表

CREATE TABLE quorum.omg (
id int,
a int,
b text,
c text,
PRIMARY KEY ((id, a), b)
) WITH CLUSTERING ORDER BY (b DESC)

当我使用IN运算符执行选择语句时,它对于最后一个分区键和最后一个集群键都可以正常工作

When i'am doing a select statement using IN operator, it works fine for last partition key and last clustering key

SELECT * FROM  omg WHERE id=1 AND a IN ( 1,2) AND b IN ( 'a','b' ) ;

 id | a | b | c
----+---+---+----
  1 | 1 | b | hi
  1 | 2 | a | hi

但是当我执行更新和删除操作时,会抛出这样的错误

But when i do update and delete it is throwing error like this

UPDATE omg SET c = 'lalala' WHERE id=1 AND a IN ( 1,2) AND b IN ( 'a','b' ) ;
InvalidRequest: code=2200 [Invalid query] message="Invalid operator IN for PRIMARY KEY part b"

DELETE from omg  WHERE id=1 AND a IN ( 1,2) AND b IN ( 'a','b' ) ;
InvalidRequest: code=2200 [Invalid query] message="Invalid operator IN for  PRIMARY KEY part b"

我的错误是什么?预先感谢。

What is my mistake? Thanks in advance.

推荐答案

摘自UPDATE上的DataStax文档( http://docs.datastax.com/en/cql/3.1/cql/cql_reference/update_r.html ):

From the DataStax documentation on UPDATE (http://docs.datastax.com/en/cql/3.1/cql/cql_reference/update_r.html):


仅对分区键的最后一列支持IN关系。

The IN relation is supported only for the last column of the partition key.

您的最后一个分区键是 a ,但是您正尝试在集群键 b 中使用它code>。尝试在WHERE子句中使用特定的完整主键更新/删除。

Your last partition key is a, yet you are trying to use it on your clustering key b. Try to UPDATE/DELETE with a specific, complete primary key in your WHERE clause.

这篇关于使用IN运算符的“聚类”列中的Cassandra更新和删除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆