来自不同表的Cassandra If子句条件

时间:2019-02-27 06:18:19

标签: cassandra atomicity

仅当cassandra的库存表中存在一些数量时,我才必须更新/插入shopping_cart表中的数据,并且这需要原子操作,因为invetory表经常被更新,因此我尝试使用轻量级事务如下

update shopping_cart
set 
quantity=1
where
item='item1'
if
 (select quantity from inventory where item='item1') = 2;

但是我遇到错误

mismatch input '(' expecting K_NOT 

也许轻量级事务不是做到这一点的最佳方法,我也认为if子句将不支持cassandra中不同表的查询。

那么在不损害原子性的情况下,在cassandra中实现上述操作的最佳方法是什么。

1 个答案:

答案 0 :(得分:1)

上面的查询类型将不可能-我能想到的两个选择,

  1. 当您想更新数量时,也要在shopping_cart表中保留数量。请使用批处理语句在两个表中进行更新。
  2. 在应用程序本身中处理此问题,但会更加痛苦。