2017-10-12 16 views
0

私はCassandraを初めて使います。私がaccount_idでソートできるようにするために、ユニークな挿入がどのように機能するのでしょうか?IF NOT EXISTSを使用して一次キーとクラスタリング列を持つ一意の挿入

など。テスト(電子メール、アクティブ、ACCOUNT_ID、パスワード、名前、電話)VALUES INTO

INSERT(?、?、?、?、?、?)

を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

ポストに記載されている使用例では、各電子メールIDに対して1つの行しか必要ないということです。

これが必要な場合は、主キーからaccount_idを削除する必要があります。

メールは、スキーマ内のpartition_keyだけになります。

カサンドラは、あなたがこのの上にいずれかのユーザースパークすることができますACCOUNT_IDことで、クエリをソートするので、非クラスタ化列のソートをサポートしていませんか、あなたのバックエンドでソート行うことができます。

+0

これは意味があります。主キーの一部となるクラスタリング列を使用しているかどうかを確認します。 – patbaker82

関連する問題