这是我的桌子
CREATE TABLE quorum.omg (
id int,
a int,
b text,
c text,
PRIMARY KEY ((id, a), b)
) WITH CLUSTERING ORDER BY (b DESC)
当我使用 IN 运算符执行 select 语句时,它对于最后一个分区键和最后一个集群键效果很好
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
但是当我更新和删除时,它会抛出这样的错误
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"
我的错误是什么?提前致谢。
来自关于 UPDATE 的 DataStax 文档(http://docs.datastax.com/en/cql/3.1/cql/cql_reference/update_r.html http://docs.datastax.com/en/cql/3.1/cql/cql_reference/update_r.html):
仅分区键的最后一列支持 IN 关系。
您的最后一个分区键是a
,但您正在尝试在集群键上使用它b
。尝试在 WHERE 子句中使用特定的完整主键进行 UPDATE/DELETE。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)