gpt4 book ai didi

cassandra - 我如何知道该记录是重复的还是已成功插入?

转载 作者:行者123 更新时间:2023-12-04 14:43:03 24 4
gpt4 key购买 nike

这是我的 CQL 表:

CREATE TABLE user_login (
userName varchar PRIMARY KEY,
userId uuid,
fullName varchar,
password text,
blocked boolean
);

我有这个 datastax java 驱动程序代码
PreparedStatement prepareStmt= instances.getCqlSession().prepare("INSERT INTO "+ AppConstants.KEYSPACE+".user_info(userId, userName, fullName, bizzCateg, userType, blocked) VALUES(?, ?, ?, ?, ?, ?);");

batch.add(prepareStmt.bind(userId, userData.getEmail(), userData.getName(), userData.getBizzCategory(), userData.getUserType(), false));


PreparedStatement pstmtUserLogin = instances.getCqlSession().prepare("INSERT INTO "+ AppConstants.KEYSPACE+".user_login(userName, userId, fullName, password, blocked) VALUES(?, ?, ?, ?, ?) IF NOT EXIST");

batch.add(pstmtUserLogin.bind(userData.getEmail(), userId, userData.getName(), passwordEncoder.encode(userData.getPwd()), false));
instances.getCqlSession().executeAsync(batch);

这里的问题是,如果我删除 IF NOT EXIST一切正常,但如果把它放回去,它就不会在表中插入记录,也不会抛出任何错误。

那么我怎么知道我正在插入重复的 userName ?

我正在使用 cassandra 2.0.1

最佳答案

使用 INSERT... IF NOT EXISTS ,那么您可以使用 ResultSet#wasApplied()检查结果:

ResultSet rs = session.execute("insert into user (name) values ('foo') if not exists");
System.out.println(rs.wasApplied());

笔记:
  • 此 CQL 查询是一个轻量级事务,具有性能影响。见 this article想要查询更多的信息。
  • 您的示例只有一个语句,您不需要批处理
  • 关于cassandra - 我如何知道该记录是重复的还是已成功插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31390419/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com