UNIQUE使用IF NOT EXISTS插入主键和聚类列

时间:2017-10-12 18:39:11

标签: cassandra

我是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);

1 个答案:

答案 0 :(得分:1)

对于您在帖子中提到的用例,您只希望每个电子邮件ID都有一行。

如果这是您想要的,那么您必须从主键中删除account_id。

那么电子邮件将只是您架构中的partition_key。

Cassandra不支持在非群集列上进行排序,因此要按account_id对查询进行排序,您可以使用用户点火,也可以在后端进行排序。