我有一个批量插入语句。
假设我有一个查询:
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?
中答案 0 :(得分:0)
我在这里回答了类似的问题:Cassandra batch statement - Execution order
基本上,您不能在批处理语句中强制执行任何操作顺序(除非您强制执行写时间戳)。如果col1
和col4
确实是您的密钥,那么您应该只期望写入一行(因为它们具有相同的键值,并且Cassandra中的主键是唯一的)。所以看起来你的第一个声明必须每次都“赢得”“最后写赢”比赛。
此外,BATCH语句设计用于将相同数据原子地写入多个表。它们并非真正用于支持将不同的数据写入相同的表。在这种情况下,您将新的col2
和col3
值写入同一个PRIMARY KEY,因此我不确定您要在此处完成什么。
即。如果在col3
col4=632
和col1=1
{79}中真的是你想要的值,那么为什么还要写99到col3
?