Save and Execute返回cassandra中的上一行和当前行

时间:2015-08-25 21:06:09

标签: java cassandra datastax

我正在 cassandra 2.1 ,并且在这里可能有一个新手问题。

我使用较新的时间戳(日期列)覆盖现有行。

QueryBuilder.insertInto(...)
session.execute(statement);
then do 

String sql = "SELECT * FROM "+keyspace+"."+tablename;
ResultSet resultSet = session.execute(sql);

我返回了两行。一个是insertInto语句之前的语句,另一个是insertInto语句更新的新值。

我如何只获得一行? cqlsh只显示一行。

1 个答案:

答案 0 :(得分:0)

您可能已将表定义为使用Date列作为群集列。这用于收集时间序列数据,因此插入具有不同时间戳的行会创建新行而不是更新现有行。

如果要更新(覆盖)现有行,则为PRIMARY KEY列出的所有字段必须具有相同的值。

此外,如果您正在使用UPDATE语句,请注意UPDATE和INSERT在Cassandra中执行相同的操作,因此如果键值与现有行完全匹配,则使用UPDATE就像INSERT一样。