java - Cassandra Java Driver : How are insert,更新、删除结果报错?

标签 java cassandra cql3

我正在编写一个应用程序,我需要能够判断插入和更新是否成功。我正在使用“INSERT ... IF NOT EXISTS”来获取轻量级事务行为,并注意到从执行返回的结果集包含一个包含更新数据的行和一个可以查询的“[applied]”列。太棒了。但是我有一个返回空结果集的更新语句。看起来好像更新成功了,但我想要一种程序化的方式来验证这一点。

澄清:

我已经打开了我的突变返回的结果集的一些日志记录。我发现“INSERT...IF NOT EXIST”返回一个 ResultSet,其中包含一个名为“[applied]”的 boolean 列。如果“[applied]”为假,它还会返回已经存在的行。

使用 UPDATE,我总是看到一个空的结果集。

所以我有两个问题:

  1. 关于每种突变类型的结果集应包含哪些内容的文档在哪里?我没有在 CQL 文档或 Java 驱动程序文档中看到它。我什至尝试查看其他语言集成的文档,但没有找到任何关于突变结果集内容的描述。
  2. 有没有办法找出有多少行被 UPDATE 修改或被 DELETE 删除?

最佳答案

甚至我也遇到了同样的问题。我发现的一件事(尽管是一个糟糕的技巧)是,如果更新或插入失败,结果集中的列定义不止一个,如果突变成功,则列定义仅包含一个列,即 "applied"。问题是 ResultSet 不包含“applied”列的值,如果突变成功则为“true”,如果事务阻止更改数据则为“false”。到目前为止,我正在我的应用程序中使用这个 hack,但我认为它不是一个好的解决方案,所以即使我在寻找更好的解决方案。

关于java - Cassandra Java Driver : How are insert,更新、删除结果报错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21147871/

相关文章:

cassandra - Cassandra 中的滑动窗口 TTL

java - 使用java在jboss中使用MDB的JMS队列监听器和发布器

java - 如何以编程方式限制 Eclipse (Message)Console 的缓冲区大小?

c# - 忽略属性不起作用 CassandraCSharpDriver

Java 连接到在 docker 中运行的 cassandra

java - 宽行的 Cassandra CQL3 java 示例

java - JqG​​rid和Grails EasyGrid插件:如何替换网格中的[object Object]?

java - 远程 Tomcat .war 部署基 URL 更改

cassandra - cassandra 中 owns% 的含义是什么以及如何更改它?

cassandra - 低基数列的二级索引 cassandra