2016-07-24 20 views
0

你好,我對Cassandra很新,幾天前已經開始學習它。如果不存在函數,我有一個問題。 如果不存在只有1列工作?。我擔心的是,如果我有一個包含3個屬性的列族,如Cassandra如果不存在執行唯一的電子郵件

ID(UUID:主鍵),電子郵件(文本)和名稱(文本)。並保存這個數據庫

 1, "[email protected]" , "John" 

如果有人試圖註冊,並提出「[email protected]」和「約翰」作爲名字將在通和接受呢?顯然會有人具有相同的名稱和不同的電子郵件,我不希望該插入被拒絕。我基本上只是想拒絕插入,如果電子郵件已經存在於數據庫中,而沒有其他。

回答

1

當您執行INSERT ... IF NOT EXISTS時,它確保只有在記錄不存在於相同的PK時才能進行插入。請記住,如果沒有IF EXISTS子句,它將像這個PK的更新,即INSERT使用相同的PK只是Cassandra中的更新,如果你不想要這種行爲,那麼這就是IF NOT EXSTTS也就是輕量級事務(LWT)幫助 。所以在你的情況下,如果其他人放置了「[email protected]」和「John」,那麼只要ID不同,就會繼續。注意​​'IF NOT EXISTS'在這裏只是確保現有的ID值不被覆蓋。因爲你的ID是UUID類型的,所以看起來你可能會得到不同ID的相同電子郵件地址,我猜可能不是你想要的。如果你想拒絕插入,如果電子郵件已經存在,那麼它會更好使用email_address作爲PK,並且確保不允許插入具有現有PK。

相關問題