我创建了一个CF,之后在列上添加了一个二级索引 . 在我添加二级索引之后(如下所述:http://www.datastax.com/docs/1.1/ddl/indexes)我希望UPDATE语句能够使用WHERE子句中的二级索引列 . 可悲的是,他们没有 .
- 创建了表模式:
CREATE TABLE注册表(referencesetid uuid,referenceid uuid,acquiredbyendpoint uuid,name text,PRIMARY KEY(referencesetid,referenceid))
- 添加了索引:
CREATE INDEX nameidx ON注册表(名称);
- 插入一行:
INSERT INTO注册表(referenceSetId,referenceId,acquiredByEndpoint,name)VALUES(96ade698-09c5-46f0-beb4-b842e5352bc8,a97c6163-f4bc-4eaf-a7e0-700578bdc44c,00000000-0000-0000-0000-000000000000,'John');
- 执行更新查询(在WHERE子句中,我指的是nameidx,因为这是索引字段'name'的名称):
UPDATE注册表SET acquirebyendpoint = 00000000-0000-0000-0000-000000000001 WHERE nameidx ='John'AND referencesetid = 36da89c3-f256-4d56-83c0-37569311a8a0;
- 错误:
错误请求:未知密钥标识符nameidx
有没有人有任何建议我做错了什么?
它可能不太明显(即配置文件或C *版本),因为C *索引文档在我看来很简单 .
干杯保罗 .
1 回答
正如您在顶部所说,Cassandra不支持UPDATE,WHERE子句中的字段是索引字段 . 您只能使用主键字段进行更新 .
此外,该字段仍称为名称,索引名称不用于索引查找 .