Cassandra 如何在CQL DataStax java驱动程序中进行数据更新
我正在使用DataStax java驱动程序进行CQL表数据的插入、更新。我的问题是如何通过Cassandra 如何在CQL DataStax java驱动程序中进行数据更新,cassandra,cql3,datastax-java-driver,Cassandra,Cql3,Datastax Java Driver,我正在使用DataStax java驱动程序进行CQL表数据的插入、更新。我的问题是如何通过ResultSet知道更新查询成功。下面的代码正在更新表中的记录 PreparedStatement statement = session.prepare(query); BoundStatement bs = new BoundStatement(statement); ResultSet resultSet = session.execute(bs.bind(key));
ResultSet
知道更新查询成功。下面的代码正在更新表中的记录
PreparedStatement statement = session.prepare(query);
BoundStatement bs = new BoundStatement(statement);
ResultSet resultSet = session.execute(bs.bind(key));
一般来说,您将无法获取信息,但仍可以通过
启用跟踪
对其进行跟踪,这可以提供有关该操作的更多信息
ResultSet results = session.execute(query);
ExecutionInfo executionInfo = results.getExecutionInfo();
QueryTrace queryTrace = executionInfo.getQueryTrace();
关于进一步的信息,我建议您在跟踪时进行此操作 我强烈建议不要在生产环境中启用跟踪,并在代码中使用其结果作为验证。一般来说,在cassandra world中,如果更新/插入调用未引发异常,则更新成功。您的更新是否反映在所有副本中是另一个问题。如果您想要更高的一致性,您应该使用C*的可调一致性,并在调用中使用更高的一致性级别 我认为@arya是正确的,在cassandra world中,一般来说,如果你的更新/插入调用没有抛出异常,那么你的更新就成功了。无论是SQL世界还是NoSQL世界,都不能从UPSERT操作中检索返回信息。不要以这种方式使用跟踪。这真是个糟糕的建议。你要求C*执行一个操作,你指定了你想要的操作一致性(1,quorum等),如果C*不能按照要求的一致性执行操作,它会告诉你,否则你可以假设一切都进行得很顺利。