【发布时间】:2015-12-03 14:44:58
【问题描述】:
我正在使用 cassandra 2.2.3 并希望使用两个语句进行批量更新。两者都使用轻量级事务。
BEGIN BATCH
UPDATE account SET values['balance'] = 11 WHERE id = 1 IF values['balance'] = 10;
UPDATE account SET values['balance'] = 11 WHERE id = 2 IF values['balance'] = 10;
APPLY BATCH;
批处理返回以下错误:
InvalidRequest: code=2200 [Invalid query] message="Batch with conditions cannot span multiple partitions".
我了解由于分区的原因,无法在 where 子句中对各种 PK 进行批处理,但为什么不能对同一个 PK 进行批处理?问题是 IF 语句,删除它们,批处理正在工作。
那么有没有办法成功执行这样的批量更新呢?或者任何解决方法?
编辑: 这是我的架构:
CREATE TABLE booking.account (
id int PRIMARY KEY,
values map<varchar, decimal>,
timestampCreate timestamp,
timestampUpdate timestamp
);
【问题讨论】:
-
你能显示表格架构吗?
-
我将架构添加到帖子中。谢谢
标签: cassandra