您好我是Cassandra的新手,并且几天前开始学习它。如果不存在功能,我有一个问题。 如果不存在,只能在1列上使用吗?。我担心的是,如果我的列族包含3个属性,例如
ID(UUID:主键),电子邮件(文本)和名称(文本)。并将其保存在数据库中
1, "MyEmail@gmail.com" , "John"
如果其他人试图注册并放置" DifferentEmail@gmail.com"和"约翰"如果这个名称会被通过并被接受吗?显然会有人使用相同名称和不同的电子邮件,我不希望拒绝该插入。如果电子邮件已经存在于数据库中,我基本上只想拒绝插入。
答案 0 :(得分:1)
当你执行INSERT ...如果不是EXISTS那么它确保只有当具有相同PK的记录不存在时才进行插入。请记住,如果没有IF EXISTS子句,它就像是PK的UPDATE,即使用相同PK的 INSERT只是Cassandra中的UPDATE,如果你不想要这种行为那么那就是IF NOT NOT EXISTS又称Lightweight Transaction(LWT)帮助即可。所以在你的情况下,如果其他人放置“DifferentEmail@gmail.com”和“John”,那么只要ID不同就会继续。请注意,“IF NOT EXISTS”只是确保现有ID值不会被覆盖。由于您的ID是UUID类型,所以看起来您可能最终得到不同ID的相同电子邮件地址,我想这可能不是您想要的。如果您想要拒绝插入,如果电子邮件已经存在那么它会更好使用email_address作为PK,这将确保不允许使用现有PK进行插入。