我是Cassandra的新手。鉴于我希望能够按account_id排序,唯一插入将如何工作?
E.g。
INSERT INTO测试(电子邮件,活动,帐户ID,密码,姓名,电话)价值(?,?,?,?,?,?)如果不是EXISTS
我原以为如果电子邮件已经存在于数据库中,我会收到“应用的假”。但是,如果电子邮件存在且account_id不同,我发现另一行已插入数据库。
当存在主键和群集列时,如何使用IF NOT EXISTS执行LWT。我只希望仅在主键不存在时才应用插入。我不希望逻辑包含主键+聚类列。
CREATE TABLE test.testing (
email text,
account_id uuid,
password text,
name frozen <name>,
active boolean,
phone map<text, frozen <phone>>,
PRIMARY KEY ((email), account_id);
答案 0 :(得分:1)
对于您在帖子中提到的用例,您只希望每个电子邮件ID都有一行。
如果这是您想要的,那么您必须从主键中删除account_id。
那么电子邮件将只是您架构中的partition_key。
Cassandra不支持在非群集列上进行排序,因此要按account_id对查询进行排序,您可以使用用户点火,也可以在后端进行排序。