因此,我尝试在 Cassandra 中执行 CAS(比较和设置)类型操作,仅当特定非主键列为 NULL
时,我才想进行数据更新。或< ?
哪里?
由客户端代码提供。
我该怎么做?类似以下内容不起作用:
UPDATE my_dbs.foo SET col1=5 WHERE id=1 IF (col1 = NULL OR col1 < 4);
我得到的错误类似于以下内容:
SyntaxException: <ErrorMessage code=2000 [Syntax error in CQL query] message="line 1:149 no viable alternative at input '(' (...
如何在 Cassandra 2.0/2.1 中执行此操作?
最佳答案
IF 子句中不支持 OR 逻辑运算符。来自文档here :
概要:
UPDATE keyspace_name.table_name
USING option AND option
SET assignment, assignment, ...
WHERE row_specification
IF column_name = literal AND column_name = literal . . .
IF EXISTS
也许可以进行两次单独的更新来涵盖这两种情况,或者在插入时使用默认的非空值填充 col1,因为这不会损害您的应用程序逻辑。
关于cql - Cassandra轻量级事务/CAS中的多个IF条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35978746/