【发布时间】:2016-02-17 17:56:54
【问题描述】:
Cassandra CQL 支持 UPDATE IF [condition] 其中 [condition] 是不等式吗?
我查看了语言参考,似乎 CQL 不能通过其语法支持不等式。我使用了这里的语言参考:https://cassandra.apache.org/doc/cql3/CQL.html#updateStmt
令人困惑的是,使用 C# 驱动程序或 CQLSH 可以成功执行查询,但是从 Datasax DevCenter 执行相同操作时出现错误。
我正在使用类似于以下的查询:
UPDATE product
SET edit_date = [new_value]
WHERE customer_id = '4' AND code = 'AMZ-ISMDB'
IF edit_date < [new_value]
结果如下:
-
Datasax DevCenter 在尝试执行脚本 sn-p 时引发错误。我得到的错误是抱怨脚本的 UPDATE IF 部分中的不等式。
当前脚本中存在一个语法错误(请参阅下面的详细信息)。 请修复并重试。 第 29 行:输入 '
没有可行的替代方案 如果我将 CLINQ 与 Datasax C# 驱动程序一起使用,则会按上述方式生成查询,并且在执行时,如果新的 edit_date 在现有的 edit_date 之后(这是预期的行为),则会保留更新。
使用 CQLSH 查询成功运行并且更新被持久化
【问题讨论】:
-
你的 cassandra 和 CQL 版本是多少?
标签: cassandra cql cql3 cqlsh cqlinq