给出一张表:
CREATE TABLE t (
k text,
v1 int,
v2 int,
PRIMARY KEY (k)
)
是否可以将v1
设置为某个值并使用单个查询删除(设置为空)v2
?类似的东西:
UPDATE t SET v1=100, v2=NULL WHERE k='somekey';
我查看了文档,但一无所获。
有这个功能会有两个原因:
答案 0 :(得分:3)
您建议的查询(至少)在CQL3中起作用:
cqlsh:ks> UPDATE t SET v1=100, v2=NULL WHERE k='somekey';
cqlsh:ks> select * from t;
k | v1 | v2
---------+-----+------
somekey | 100 | null
如果您想进行更复杂的原子更新,例如在不同的行键或列系列中,您可以在BEGIN BATCH
... APPLY BATCH
中打包单独的更新。
答案 1 :(得分:0)
如果您只想删除数据,则可以考虑使用DELETE operation来更新为null,这些数据在列和/或行上以原子方式工作。
您提到找不到文档。这是与Richard的优秀答案相关的文档: - 单个查询对单行的更新是atomic by default。 - Batch operations自1.2以来也是原子的