cassandra批处理语句在只有一列不匹配时插入相同的值

时间:2017-05-19 10:14:39

标签: cassandra

我有一个批量插入语句。

假设我有一个查询:

BEGIN BATCH
INSERT INTO abc (col1,col2,col3,col4) VALUES (1,'xyz',99,632);
INSERT INTO abc (col1,col2,col3,col4) VALUES (1,'xyz',79,632);
APPLY BATCH;

它只插入第一个语句,而不是插入第二个语句中的值。

注意:col1是聚簇键,col4是分区键。

我们如何确保最后一个insert语句被保存在db?

1 个答案:

答案 0 :(得分:0)

我在这里回答了类似的问题:Cassandra batch statement - Execution order

基本上,您不能在批处理语句中强制执行任何操作顺序(除非您强制执行写时间戳)。如果col1col4确实是您的密钥,那么您应该只期望写入一行(因为它们具有相同的键值,并且Cassandra中的主键是唯一的)。所以看起来你的第一个声明必须每次都“赢得”“最后写赢”比赛。

此外,BATCH语句设计用于将相同数据原子地写入多个表。它们并非真正用于支持将不同的数据写入相同的表。在这种情况下,您将新的col2col3值写入同一个PRIMARY KEY,因此我不确定您要在此处完成什么。

即。如果在col3 col4=632col1=1 {79}中真的是你想要的值,那么为什么还要写99到col3